timezone
플러그인을 추가할 때는 반드시 utc
플러그인도 함께 추가해야 한다dayjs 에는 타임존과 관련된 기능이 기본 기능으로 포함되어 있지 않다.
타임존과 관련된 기능을 사용하려면 timezone
플러그인을 추가해줘야 한다.
그런데 timezone
플러그인을 추가할 때 반드시 utc
플러그인도 함께 추가해줘야 한다.
timezone
플러그인이 utc
플러그인에 의존성을 갖고 있기 때문에 utc
플러그인을 추가해주지 않으면 타임존 기능을 사용할 때 에러가 발생한다.
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.tz.setDefault()
메서드는 dayjs 의 디폴트 타임존을 변경하는 메서드가 아니다dayjs.tz.setDefault()
메서드로 dayjs 의 디폴트 타임존을 변경할 수 있다고 알고 있었다.
그런데 실제로 테스트해보니 dayjs.tz.setDefault()
메서드로 디폴트 타임존을 변경하더라도 dayjs 에서 사용하는 타임존은 여전히 호스트 시스템의 타임존이었다.
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
console.log(dayjs().format()); // 2022-06-11T18:24:42+09:00
dayjs.tz.setDefault('America/New_York');
console.log(dayjs().format()); // 2022-06-11T18:24:42+09:00
알고보니 dayjs.tz.setDefault()
메서드는 dayjs 의 디폴트 타임존을 변경하는 메서드가 아니라 dayjs.tz 함수의 디폴트 타임존을 변경하는 메서드였다.
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
console.log(dayjs().tz().format()); // 2022-06-11T18:24:42+09:00
dayjs.tz.setDefault('America/New_York');
console.log(dayjs().tz().format()); // 2022-06-11T05:24:42-04:00
디폴트 타임존으로 설정한 타임존과 호스트 시스템의 타임존이 항상 똑같이 Asia/Seoul
이다보니 지금까지 이 사실을 몰랐었다...😨
+ 2023년 05월 20일 내용 추가
dayjs 의 디폴트 타임존은 변경할 수 없지만, Node.js 애플리케이션의 타임존은 TZ
환경 변수로 변경할 수 있다. (공식 문서)
예를 들어, 아래와 같이 'TZ' 라는 이름의 환경 변수에 'America/New_York' 을 설정해주면
TZ=America/New_York
Node.js 애플리케이션의 타임존이 뉴욕으로 바뀐다.
import dayjs from 'dayjs';
console.log(dayjs().format()); // 2023-05-20T05:48:59-04:00
선생님..감사합니다...흐긓ㄱ