タイムゾーン
タイムゾーンは、タイムゾーン間での解析や表示を行うために、dayjs.tz
、.tz
、.tz.guess
、.tz.setDefault
API を提供します。
javascript
var utc = require('dayjs/plugin/utc');
// import utc from 'dayjs/plugin/utc' // ES 2015
var timezone = require('dayjs/plugin/timezone'); // utc プラグインに依存
// import timezone from 'dayjs/plugin/timezone' // ES 2015
dayjs.extend(utc);
dayjs.extend(timezone);
const timestamp = '2014-06-01 12:00';
const tz = 'America/New_York';
const dayjsLocal = dayjs(timestamp); // UTC として扱われる
//dayjsLocal.toISOString() -> 2014-06-01T12:00:00.000Z
//dayjsLocal.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
const dayjsAmerica = dayjsLocal.tz(tz); // 既存の時刻は UTC として扱われる
//dayjsAmerica.toISOString() -> 2014-06-01T12:00:00.000Z
//dayjsAmerica.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T08:00:00
const dayjsAmericaKeep = dayjsLocal.tz(tz, true); // 既存の時刻はローカル時刻として扱われる
//dayjsAmericaKeep.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmericaKeep.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
ユーザーのタイムゾーンを推定する
javascript
dayjs.tz.guess();
指定されたタイムゾーンで解析する
javascript
const d1 = dayjs.tz('2013-11-18 11:55', 'Asia/Taipei');
d1.format(); // => 2013-11-18T11:55:00+08:00
d1.toISOString(); // => 2013-11-18T03:55:00.000Z
指定されたタイムゾーンに変換する
javascript
const d2 = dayjs.utc('2013-11-18 11:55').tz('Asia/Taipei');
d2.format(); // => 2013-11-18T19:55:00+08:00
d2.toISOString(); // => 2013-11-18T11:55:00.000Z
デフォルトタイムゾーンの設定/リセット (.tz
で使用)
javascript
// デフォルトのタイムゾーンを設定する
dayjs.tz.setDefault('America/New_York');
// デフォルトのタイムゾーンをシステムのタイムゾーンにリセットする
dayjs.tz.setDefault();
Moment との違い
デフォルトのタイムゾーンを使用する場合、moment(dateValue)
はそのタイムゾーンを使用します (ただし、moment.tz(dateValue, timezone)
は依然として 2 番目のパラメータが必要です)。
一方、dayjs(dateValue)
は、dayjs.tz.setDefault
が使用されていても、常にローカルタイムゾーンを使用します。デフォルトタイムゾーンを使用するのは、引数を 1 つだけ指定した dayjs.tz(dateValue)
のみです。