index

위도, 경도, 자오선, 그리니치 자오선

위도: 적도(위도 0도)를 기준으로 북극 또는 남쪽으로 얼마나 떨어져 있는지 나타내는 위치, 북극점-90° N(북위 90도) / 남극점-90° S(남위 90도)

경도/자오선

meridian.png

이미지 출처

본초 자오선

그리니치 자오선

이미지 출처

UT1, GMT, TAI, UTC

GMT (Greenwich Mean Time)

UT1 (Universal Time 1)

TAI (International Atomic Time, 국제 원자시)

UTC (Coordinated Universal Time, 협정 세계시)

간단히 설명하자면 과거엔 지구의 자전만을 기준으로 시간을 측정했는데 자전 속도에 미세한 차이가 있어 천체의 움직임과 무관한 절대적인 시간 기준을 구한 뒤 오차를 보정한 시간이 UTC이다

-> UTC: GMT(UT1) + 연초(TAI)

UTC/GMT 시간대 표기 (ISO-8601, Offset, RFC 1123)

ISO-8601

YYYY-MM-DDThh:mm:ssZ

2025-05-21T12:15:45Z

2025년 5월 21일 12시 15분 45초 UTC 기준

필요에 따라 아래와 같이 마이크로초 또는 밀리초를 포함할 수 있다

2025-05-21T12:15:45.123Z     // 밀리초
2025-05-21T12:15:45.123456Z  // 마이크로초

시간대 오프셋 포함 형식

UTC에서 몇 시간 차이가 나는지 오프셋을 포함해서 표기하는 방식으로 지역 시간대를 표현할 때 사용된다

YYYY-MM-DDThh:mm:ss±hh:mm

UTC+hh:mm    // UTC보다 빠른 시간을 가진 시간 표현 (동반구)
UTC-hh:mm    // UTC보다 느린 시간을 가진 시간 표현 (서반구)

2025-05-21T12:15:45+09:00 -> 한국 시간 (KST, UTC+9)

2025-05-20T03:30:40-05:00 -> 미국 동부 표준시 (EST, UTC-9)

RFC 1123 (축약 표기)

EEE, dd MMM yyyy hh:mm:ss GMT

Tue, 20 May 2025 12:30:45 GMT

Time Zone

timezone.png

이미지 출처

타임존은 지구상의 지역별 표준 시간대를 정의한 체계를 말한다

지구는 15도마다(360도/24시간) 1시간씩 시차가 생기는데, 이를 기준으로 세계 각국에서 자국의 위치나 정치적 판단에 따라 시간대를 설정한다

IANA 기관에서 타임존 데이터베이스(TZDB)를 통해 전 세계의 표준 시간대 정보를 기록하고 관리하며, 운영체제나 프로그래밍 언어 등에서 시간 계산의 기준으로 사용한다

타임존 리스트 사이트

시간대 및 현재 시간 API 제공 사이트

타임존 표기

타임존은 UTC 오프셋(UTC+09:00 등) 또는 IANA 타임존 식별자를 사용하여 표기한다

IANA 타임존 식별자는 운영체제와 프로그래밍 언어가 사용하는 표준 이름이다

IANA Time Zone

UTC 오프셋은 항상 고정되어 있는 반면 IANA 타임존 식별자는 변경될 수 있으며 DST를 반영한다

DST (Daylight Saving Time, 서머타임)

일광 절약 시간제라고도 하는 서머타임은 여름철에 표준 시간보다 1시간 시계를 앞당겨 사용하는 제도이다 (미국, 캐나다 등에서 사용)

봄에 DST를 시작하여 시계를 1시간 앞으로 조정한다 (보통 3월 둘째 주 일요일 새벽 2시 -> 3시로 설정)

가을에 DST를 종료하여 시계를 1시간 뒤로 조정한다 (보통 11월 첫째 주 일요일 새벽 2시 -> 1시로 설정)

DST를 적용하기 위해 3월에는 1시간이 건너뛰어지고, 11월에는 1시간이 두 번 존재하게 된다 -> 예약 시스템, 로그, 크론 잡 등에서 오류 발생 가능성 생김

DST 대응 전략

Unicode CLDR

Unicode CLDR(Common Local Data Repository)는 전 세계의 다양한 언어와 지역에 대해 소프트웨어가 제대로 동작할 수 있도록 표준화된 지역화 데이터를 모아놓은 공용 저장소이다

다국어/다지역 지원 소프트웨어의 기준 데이터를 제공하는 국제 표준

날짜/시간 이외에도 다양한 형식들로 구성된 항목들을 보관하고 있으며 JSON/XML 형태로 배포된다

프로그래밍 언어에서 제공하는 국제화(i18n) 라이브러리는 이를 기반으로 한다

Epoch Time

에포크 타임은 1970년 1월 1일 00:00:00 UTC를 기준으로 경과한 초(또는 밀리초, 마이크로초 등)를 나타내는 시간 표현 방식이다

유닉스 계열 시스템이 POSIX 표준에 따라 이 시간을 사용하여 Unix time, POSIX time, Unix timestamp 라고도 말한다

지역 시간, 달력, 윤년 등 다양한 시간 변수로부터 무관한 절대 기준 시간이 되며 숫자를 기반으로 하고 있어 시간 차 계산이 매우 단순하고 저장 효율이 높다

0 = 1907-01-01 00:00:00 UTC
1747827431 = 2025-05-21 14:59:24 UTC
2025-05-21 10:00:00 - 2025-05-20 09:00:00 = ?  // 복잡함  
1747888800 - 1747798800 = 90000초              // 단순함

참고로 2038년 2월 19일이 되면 에포크 타임의 값은 32비트로 표현할 수 있는 최대값(2,147,483,647)을 넘어서기 때문에 애플리케이션은 새로운 타임스탬프 컨벤션이나 64비트 기반 시스템을 사용해야 한다

timestamp

타임 스탬프는 시간 데이터를 표현하는 기록 값으로 주로 시스템 이벤트, 데이터 생성 시점, 정렬 기준 등에서 사용된다

지역 시간이나 타임존에 영향을 받지 않고 정확한 시점을 표현한다

표현 방식

시간 단위

초 단위

1시간: 3,600초

1일: 86,400초

1주: 604,800초

1달(30.44일): 2,629,743초

1년(365.24일): 31,556,926초