메뉴 건너뛰기


Developer > Operating System

Linux/Unix 유닉스 타임(Unix Time)

2014.04.12 02:47

푸우 조회 수:16145


프로그램 관련 서적이나 메뉴얼등을 보다보면 날짜나 시간을 유닉스 타임으로 기록했다는 표현을 볼 수 있다.


실제 값은 1397236159 식의 알 수 없는 엄청 큰 숫자가 적혀있는 경우가 대부분이다.


유닉스타임이란 유닉스에서 사용한 시간의 표현방법으로 1970년 1월 1일 1시부터 지나온 초를 카운팅한 값을 의미한다.


유닉스를 C로 만들었기 때문에서 표준 C언어의 time_t 데이터 형이 저장하는 시간 개념과도 같다.


즉 1970년 1월 1일 0시는 유닉스 타임 0 이고 

    1970년 1월 1일 1시는 유닉스 타임 3600 이다.


참고로 다음 사이트에 가면 유닉스 타임을 변환해 볼 수 있다.

http://www.4webhelp.net/us/timestamp.php

http://www.onlineconversion.com/unix_time.htm


Linux의 date 명령으로도 계산이 가능한데 사용법은 다음과 같다.


* Unix Time 을 일반 날짜로 변환

date -d '1970-01-01 1397237119 sec'

* Unix Time을 지정된 형태의 날짜로 변환

date -d '1970-01-01 1397237119 sec' +'%Y-%m-%d %H:%M:%S'

* 일반 날짜를 Unix Time으로 변환

date -d '2014-04-11 17:25:19' +%s


* 현재 시간의 Unix Time알아내기

date +%s


뭐 이건 그렇고 C언어의 time_t 데이터 형이 32비트 부호있는 정수여서 이값의 최대값은 2147483647으로 이를 일반 날짜로 변환하면 2038-01-19 03:14:07 이 된다.


이 의미는 C언어로 구현된 시간은 2038년 1월에 문제가 발생할 수 있다는 이야기다.


옛날 2000년도가 시작되면 밀레니엄 버그다 라면 온 세상이 떠들썩 했는데 2038년이되면 어찌될지 모르겠다.


뭐 머리 좋은 사람들이 그 사이에 또 해결하겠다고 하겠지만... 암튼 그렇다는 거다.