JavaScript Date 객체의 대안으로 제안되어 현재 stage 3에 있는 Temporal 객체에 대한 글입니다.


JavaScript의 표준인 ECMAScript를 만드는 TC39의 프로세스에는 stage가 0~4까지 있습니다. stage 3은 특별한 이유가 없으면 스펙은 확정되었으므로 구현을 하도록 권장되는 단계이고 이단계를 거치면 stage 4로 가서 표준이 될 준비를 하게 됩니다.


JavaScript에서 Date 객체는 기능이 충분치 않아서 보통은 날짜 관련 라이브러리를 가져다가 쓰는게 일반적인데 Temporal은 이를 대체하기 위해서 제안된 객체입니다.


이 글에서는 보통 앱을 구현할 때 타임스탬프나 ISO 스트링을 사용하면서 충분하다고 느끼는데 실제로는 UTC로만 표시하는 것은 정보의 누락이 있기 때문에 충분치 않다고 얘기합니다. 예시로 든게 다른 나라에 가서 카드 결제를 했을 때 나중에 한국에 돌아와서 보면 카드 시간이 새벽으로 찍히게 되는데 이는 UTC를 현지 시각으로 변환해서 보여주기 때문에 발생하는 문제로 사용자 입장에서 헷갈리는 문제입니다. 대부분의 서비스가 이렇게 해서 익숙하기도 하면서도 저도 사실상 사용자 경험이 아주 좋진 않다고 생각하긴 합니다.


Temporal의 ZonedDateTime을 쓰면 기존 시간을 표시하는 스트링뒤에 추가로 타임존과 캘린더 확장을 추가해서 해당 시간의 실제 타임존과 다양한 국가의 캘린더에서 명확하게 표시할 수 있도록 지원하고 있습니다.


그외에도 시간을 계산하는 API나 날짜 비교를 할 수 있는 API도 있어서 간단한 시간 계산에는 굳이 날짜 바리으버리를 가져다 쓰지 않아도 될 것 같습니다.


https://docs.timetime.in/blog/js-dates-finally-fixed/

JS Dates Are About to Be Fixed | TimeTime

docs.timetime.in

JS Dates Are About to Be Fixed | TimeTime

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 9월 2일 오전 10:10

댓글 0