JavaScript Temporal이 옵니다
(developer.mozilla.org)- 개요
- JavaScript Temporal 객체의 구현이 브라우저의 실험적 버전에서 출시되기 시작
- 웹 개발자들을 위한 날짜와 시간 처리가 크게 단순화되고 현대화될 예정
- 스케줄링, 국제화, 시간 관련 데이터를 다루는 애플리케이션에서 효율적이고 정확한 내장 기능 사용 가능
- JavaScript
Date
객체의 문제점
- 1995년 Java의 초기
java.util.Date
구현을 복사해 만들어짐 - 사용자의 로컬 시간과 UTC만 지원하고 시간대 지원이 없음
- 파싱 동작이 매우 불안정하고 가변적(mutable)
- 일광절약시간(DST)과 역사적 달력 변경 계산이 어려움
- Temporal의 주요 기능
-
Date
객체의 완전한 대체제로 설계 - 시간대와 달력 표현 지원
- 200개 이상의 유틸리티 메서드 제공
- 변환, 비교, 계산, 포맷팅 등 다양한 기능 포함
- 브라우저 지원 현황
- Firefox가 현재 가장 성숙한 구현을 보유
- Firefox Nightly 버전에서 실험적 기능으로 제공
- Safari와 Chrome도 구현 진행 중
- TC39 문서 페이지에서
@js-temporal/polyfill
을 통해 시험 가능
- 핵심 구성 요소
-
Duration
: 두 시점 간의 차이 -
Instant
: 타임스탬프 -
ZonedDateTime
: 시간대가 있는 날짜/시간 -
PlainDateTime
: 시간대 없는 날짜/시간 - 기타 다양한 날짜/시간 관련 클래스 제공
이 새로운 API는 JavaScript에서 날짜와 시간을 다루는 현대적인 접근 방식을 제공할 것으로 기대됩니다.
처음 Date 구현도 자바 가져오고 Temporal 구현도 자바를 많이 가져왔는데 이럴거면 이렇게 오래 걸릴 일인가 싶네요.
LocalDateTime 들어간 Java 8이 2014년이니까 이거 기반으로 Temporal 구현이 빨리 나왔으면 다양한 서드파티 라이브러리로 파편화될 필요가 없었을 듯 합니다.
기존에 여러 타임존에 따른 시간관리를 하려면 라이브러리를 쓰거나 기본적으로 여러 조건을 생각해서 구현해야했는데 기본적으로 지원해주는 방향으로 가면 좋지요