-
타임존(UTC, GMT)과 날짜 포맷(Date format) 그리고 luxon그 외 다양한 웹 지식 2023. 6. 28. 19:08반응형
날짜 포맷 변환 기능에 대한 적용을 하다가 정리를 조금 해놓으면 좋겠다고 생각되어 관련한 정보에 대한 글을 올려놓으려고 한다.
날짜 변환에 대해 접근하기 위해서는 우선 GMT, UTC, 날짜 포맷에 대해서 알아야한다.
더불어 luxon을 이용하려면 IANA도 알고 있으면 도움이 된다.
UTC
- UTC는 Coordinated Universal Time의 줄임말이다.
[ 참고 ]
Q : Coordinated Universal Time을 줄이면... CUT 아닌가...?
A : 초기에 영어권 사람들과 프랑스어권 사람들이 각각 자신들의 언어인 CUT와 TUC로 하기를 원했다. 그런데 두 언어 모두 C, T, U로 구성되어 있다는데 착안하여 UTC로 하였다.
또한 그로 인해서 시계시(UT)와 그 변형 약어들과의 일관성도 유지할 수 있게 되었다.
출처 : 위키백과- "세계 협정 시" 라고도 하며, "국제 원자시"를 기준으로 한다.
- DST를 사용한다.
GMT
- GMT는 Greenwich Mean Time의 줄임말이다. 다시 말해, "그리니치 천문대"를 기준으로 한다.
- UTC와 다르게 DST를 사용하지 않는다
[ 참고 ]
Q : DST가 뭘까?
A : Daylight Saving Time의 줄임말로써 "일광 절약 시간제" 라고 불린다.
여름철 동안 시계를 일정 기간(일반적으로 봄~가을) 동안 아프올 1시간씩 조정하여 낮 동안 더 많은 자연광을 활용할 수 있도록 하는 시간제이다.
DST 적용 여부및 기간은 국가와 지역마다 다를 수 있으니 확인이 필요하다.UTC와 GMT의 공통점과 차이점은?
- UTC와 GMT의 공통점이라고 하면 지구 자전을 중심으로 측정한다는 것이다. 그러나 각각의 기준이 다르다
- 이 둘은 약 0.9초 미만의 차이점을 보인다. 즉, 큰 차이가 없다.
날짜 포맷 (ex. yyyy-MM-dd'T'HH:mm:ss.SSS'Z')
포맷 뜻 예시 yyyy year 2023 M or MM month 5 or 05 d or dd day 8 or 08 H or HH time 5 or 05 mm miniute 30 ss second 50 SSS millisecond 333 T는 time을 나타내며 ISO 8601 국제 표준에 따라 날짜와 시간을 구분하는 구분자로 사용하고 있다.
Z는 Zulu time을 나타내며, 'Z'를 사용한다는 것은 UTC를 기준으로 한다는 것을 말한다.
T의 경우 필수적으로 사용해야 하는 것은 아니나 구분을 위해서 사용한다.
Z를 붙히게 되면 UTC 시간을 의미하므로 'Z'를 붙히지 않는다면 "+00:00"으로 사용하기도 한다.
T와 달리 Z는 큰 역할을 가지고 있다.
두 케이스에 대해서 예시를 들어서 날짜 포맷을 해보자.
case-1 : Z부재 → 2023-06-30T10:30:00.000 (yyyy-MM-dd'T'HH:mm:ss.SSS)
case-2 : Z존재 → 2023-06-30T10:30:00.000Z (yyyy-MM-dd'T'HH:mm:ss.SSS'Z')
'Z' 부재의 경우 GMT+9를 하게 되면 GMT+9의 2023-06-30T10:30:00.000을 나타낸다.
즉, 설정한 날짜 자체가 설정한 시간대(GMT+9)가 되는 것이다.
'Z' 존재의 경우 GMT+9를 하게 되면 어떻게 될까?
'Z'가 있다는 것은 UTC를 의미하므로 설정한 날짜 자체가 GMT+0이 된다.
즉, GMT+0의 2023-06-30T10:30:00.000Z이 되는 것이다.
여기에 GMT+9를 하게 되므로, 결과적으로 GMT+9의 2023-06-30T19:30:00.000Z가 된다.
여기는 9시간이 더해지게 되는 것이다.
한국의 경우 GMT+9를 하게 되는데, 그렇다면 Asia/Seoul과 GMT+9는 같은 값일까?
많은 분들이 날짜를 이용할 때 사용하는 라이브러리가 luxon이 있다.
그런데 luxon의 Manual에 가보면 아래 이미지의 빨간 박스에서 볼 수 있듯이 IANA를 사용하고 있다고 한다.
luxon에서 날짜 관련한 기능을 사용하고 싶다면 IANA에 대해서 알아야한다는 것이다.
여기 타임존 리스트가 있다.
Asia/Seoul의 경우 KST(Korea Standard Time)를 나타내는 타임존을 사용하고 있고, 이는 GMT+9를 기준으로 한국 시간을 나타낸다.
그렇다면 GMT+9와 같지 않을까?
"타임존 리스트"에 들어가서 GMT를 검색해보면 알겠지만, Etc/GMT+9 라고 사용한다.
다시 말해, luxon에서 타임존을 사용하기 위해서는 GMT+9가 아니라 Etc/GMT+9를 사용해야하는 것이다.
그렇다면 GMT+9와 Etc/GMT+9는 같을까?
이 둘 또한 다르다.
그 이유는 Etc/GMT+9의 경우 UTC 기준의 시차를 표현한 것이므로 실제로는 GMT-9의 시간대를 나타내는 것이다.
다시 말해, 표기법과 실제 값이 다르다는 것이고, GMT+9와 같은 것은 Etc/GMT-9 라는 것이다.
그렇기에 Asia/Seoul과 Etc/GMT+9는 각각 다른 결과를 나타낸다.
반응형'그 외 다양한 웹 지식' 카테고리의 다른 글
Nextjs + Docker를 통한 멀티 스테이지 빌더(multi-stage builder) (0) 2024.03.20 Docker 이미지 플랫폼 호환성 에러 (linux/amd64) (0) 2024.01.09 웹페이지 미리보기 : OGP(OG) (Open Graph protocol) (0) 2022.01.03 Open Graph Protocol 오픈 그래프 프로토콜 간단하게 알아보기 (0) 2021.12.06 프론트엔드_GTM Tag 태깅 작업 방법 (0) 2021.08.09