스토리텔링 개발자

[공통] 시간 형식(itimestamp, tick, iso8601) 본문

개발/공통

[공통] 시간 형식(itimestamp, tick, iso8601)

김디트 2021. 10. 16. 23:07
728x90

개요

시간의 형식은 시스템에 따라 다양합니다.

각각 정리해 보았습니다.

 

 

타임스탬프

위키 백과에서는 유닉스 시간을 아래와 같이 정의합니다.

 

유닉스 시간(영어: Unix time)은 시각을 나타내는 방식이다. POSIX 시간이나 Epoch 시간이라고 부르기도 한다. 1970년 1월 1일 00:00:00 협정 세계시(UTC) 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것이다.

 

즉, 타임스탬프에서 32비트 정수 0은

UTC 1970년 1월 1일 0시 0분 0초

을 의미합니다.

 

초(s) 단위이므로 32비트 정수 1은 UTC 1970년 1월 1일 0시 0분 1초를 뜻합니다.

 

단점

 

  1. 기준시각(1970년 1월 1일) 이전의 날짜/시간 값을 표현할 수 없습니다.
  2. 32비트를 넘어서는 2038년 1월 19일 이후의 날짜/시간 값을 표현할 수 없습니다.

하지만 유닉스 시스템에서 광범위하게 쓰이고 있기 때문에 아직까지는 현역으로 사용되고 있습니다.

 

 

 

타임스탬프와 개념은 비슷하지만, 64비트 정수를 사용합니다.

다른 점은 아래와 같습니다.

 

  1. 타임스탬프가 32비트 기반인 것에 비해 틱(tick)은 64비트 정수값을 사용합니다.
  2. 기준 시간은 UTC 0001년 1월 1일 0시 0분 0초입니다.
  3. 타임스탬프가 초(s) 단위인 것에 반해 틱은 밀리초(ms)입니다.

즉 타임스탬프보다 시간을 더 정교하게 표현할 수 있습니다.

 

 

 

iso8601

위키백과에서는 iso8601를 아래와 같이 정의합니다.

 

이 표준은 국제 표준화 기구(ISO)에 의해 공포되었으며 1988년에 처음으로 공개되었다.
이 표준의 목적은 날짜와 시간을 표현함에 있어 명백하고 잘 정의된 방법을 제공함으로써, 날짜와 시간의 숫자 표현에 대한 오해를 줄이고자함에 있는데, 숫자로 된 날짜와 시간 작성에 있어 다른 관례를 가진 나라들간의 데이터가 오갈때 특히 그렇다.

 

iso8601란 국가간 시간 표현을 통일하기 위한 표준 시간 표현 형식을 의미합니다.

 

형식은 정형화되지 않고 날짜만, 또는 시간만 표시할 수도 있는 유연한 형식입니다.

날짜와 시간을 모두 포함한 일반적인 형식은 아래와 같습니다.

 

2021-10-19T20:19:00+09:00

 

형식

 

  1. 날짜
    • 년-월-일의 형태를 띕니다.
    • yyyy-mm-dd 형식을 따르며, 빈 칸이 생길 시 0으로 채워줍니다.
  2. T
    • 날짜 뒤에 시간이 옴을 알리는 문자입니다.
  3. 시간
    • 시:분:초의 형태를 띕니다.
    • hh:mm:ss 형식을 따르며, 빈 칸이 생길 시 0으로 채워줍니다.
  4. Z 또는 ±hh:mm
    • UTC를 기준으로 Timezone Offset을 의미합니다.
    • Z는 UTC 시간임을 뜻합니다.
    • UTC 시간에 오프셋이 있는 경우 ±hh:mm의 형식으로 표현합니다.
    • 즉, 한국 시간을 예로 들면 시간 뒤에 +09:00을 붙입니다.
728x90
Comments