Friday, July 10, 2015

[LINUX] UTC 타임 포멧과 UNIX TIME


http로 웹에 접속하여 openAPI인 날씨데이터를 받아오는 작업을 진행 중인데 이 데이타들 중에 재밌는 데이터가 있어서 찾아보았다.

현재 사용하고 있는 날씨 openAPI는 http://openweathermap.org 라는 곳에서 데이터를 받아오는데 아래와 같은 JSON 포멧으로 데이터를 받아오면 시간 'dt'가 이상한 숫자로 되어 있다.

{"coord":
{"lon":145.77,"lat":-16.92},
"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],
"base":"cmc stations",
"main":{"temp":293.25,"pressure":1019,"humidity":83,"temp_min":289.82,"temp_max":295.37},
"wind":{"speed":5.1,"deg":150},
"clouds":{"all":75},
"rain":{"3h":3},
"dt":1435658272,
"sys":{"type":1,"id":8166,"message":0.0166,"country":"AU","sunrise":1435610796,"sunset":1435650870},
"id":2172797,
"name":"Cairns",
"cod":200}

"dt":1435658272 ???

시간 데이터라는데 이건 무슨 의미의 숫자인가?

하고 구글신께 물어보니 두가지의 표현법을 이용하여 시간을 표시하고 있었다.
먼저 첫번째는 UTC, 협정 세계시를 기준으로 시간을 표시하고 있다. UTC는 GMT(그리니치 평균시)와 큰 차이가 없어 혼용되어 사용되고 있는데 '기술적인 표기'에서는 UTC가 사용된다고 한다. 한국 같은 경우 UTC 시간에서 +9시간을 더하면 현재 한국 시간 맞춰진 시간을 알 수 있다.

문제는 여기서 표기법은 듣도보도 못한 숫자라는 것이다??

UTC로 표현하더라도 0000년00월00일 00시00분00초 로 나타내야하는데 이 숫자는 머지? 하고 보니 또 구글신께서 알려주시니!!

바로 'UNIX TIME' 이라는 것이다. 시각을 나타내는 방법으로 POSIX 시간 또는 Epoch 시간 이라고도 부르는데 골자는 1970년 1월 1일 00시 00분 00초를 기준으로 하여 협정 세계시(UTC)부터의 경과 시간을 초로 환산하여 정수로 나타낸 것 이다.

재미있지 않는가? 1970년도를 기준으로 초단위로 지금까지를 나타냈다니 다만 컴퓨터에서 32bit로 표현할 수 있는 숫자의 제한이 있다보니 2038년 1월 19일에 문제가 발생하게 된다. 이를 고치기 위해서는 64bit로 업그레이드가 필요한데 과연 언제쯤 업데이트 되려나?



No comments :

Post a Comment