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