Day.js Time Zone 対応サンプルコード : dayjs.tz() の使い方

Tadashi Shigeoka ·  Tue, June 29, 2021

Day.js で Time Zone 対応をするための dayjs.tz() の使い方のサンプルコードをご紹介します。

Day.js

背景 Day.js で Time Zone を扱いたい

Day.js で Time Zone を扱いたいのでサンプルコードを動かして理解しました。

Day.js で Time Zone 対応サンプルコード

dayjs.tz(…, String) の使用例

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

dayjs.tz().tz(String) の使用例

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(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 対応するサンプルコードを手元に用意しておきたい、現場からお送りしました。