時區
時區插件提供了 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); // 建立一個 Dayjs 物件,假設輸入時間為 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); // 將現有的 Dayjs 物件轉換為指定時區(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); // 將現有的 Dayjs 物件視為本地時間,並轉換為指定時區
//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
將 UTC 時間轉換為指定時區的時間
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.js 的差異
設定預設時區後,moment(dateValue)
會使用該時區(但 moment.tz(dateValue, timezone)
仍然需要第二個參數)。
然而 dayjs(dateValue)
總是使用本地時區,即使調用了 dayjs.tz.setDefault
;只有 dayjs.tz(dateValue)
(不帶第二個參數)才會使用預設時區。