Day.js で Time Zone 対応をするための dayjs.tz() の使い方のサンプルコードをご紹介します。
Day.js で Time Zone を扱いたいのでサンプルコードを動かして理解しました。
const dayjs = require('dayjs');
dayjs.extend(require('dayjs/plugin/utc'));
dayjs.extend(require('dayjs/plugin/timezone'));
dayjs.tz.setDefault('Etc/GMT')
dayjs.tz('2021-06-01 09:12:34', 'Asia/Tokyo').format()
// '2021-06-01T09:12:34+09:00'
dayjs.tz('2021-06-01 09:12:34', 'Asia/Tokyo').toDate()
// 2021-06-01T00:12:34.000Z
/** 以下、TZ のデフォルトを JST にして検証したコード **/
dayjs.tz.setDefault('Asia/Tokyo')
dayjs.tz('2021-06-01 09:12:34').format()
// '2021-06-01T09:12:34+09:00'
dayjs.tz('2021-06-01 09:12:34').toDate()
// 2021-06-01T00:12:34.000Z
dayjs.tz('2021-06-01 09:12:34', 'Asia/Tokyo').format()
// '2021-06-01T09:12:34+09:00'
dayjs.tz('2021-06-01 09:12:34', 'Asia/Tokyo').toDate()
// 2021-06-01T00:12:34.000Z
const dayjs = require('dayjs');
dayjs.extend(require('dayjs/plugin/utc'));
dayjs.extend(require('dayjs/plugin/timezone'));
dayjs.tz.setDefault('Etc/GMT')
dayjs.tz('2021-06-01 09:12:34').tz('Asia/Tokyo').format()
// '2021-06-01T18:12:34+09:00'
dayjs.tz('2021-06-01 09:12:34').tz('Asia/Tokyo').toDate()
// 2021-06-01T09:12:34.000Z
タイムゾーンを考慮したい場合には dayjs().tz(String) という使い方をするとバグるので、必ず dayjs.tz() を利用しましょう。
const dayjs = require('dayjs');
dayjs.extend(require('dayjs/plugin/utc'));
dayjs.extend(require('dayjs/plugin/timezone'));
dayjs.tz.setDefault('Etc/GMT')
dayjs('2021-06-01 09:12:34').tz('Asia/Tokyo').format()
// '2021-06-01T09:12:34+09:00'
dayjs('2021-06-01 09:12:34').tz('Asia/Tokyo').toDate()
// 2021-06-01T00:12:34.000Z
dayjs('2021-06-01 09:12:34').tz('America/New_York').format()
// '2021-05-31T20:12:34-04:00'
dayjs('2021-06-01 09:12:34').tz('America/New_York').toDate()
// 2021-06-01T00:12:34.000Z
以上、Day.js で Time Zone 対応するサンプルコードを手元に用意しておきたい、現場からお送りしました。