Timezone
Timezone 添加了 dayjs.tz
.tz
.tz.guess
.tz.setDefault
API 以在时区之间解析或显示。
¥Timezone adds dayjs.tz
.tz
.tz.guess
.tz.setDefault
APIs to parse or display between time zones.
var utc = require("dayjs/plugin/utc");
// import utc from 'dayjs/plugin/utc' // ES 2015
var timezone = require("dayjs/plugin/timezone"); // dependent on utc plugin
// 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); //assumes 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); //existing time treated as 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); //existing time treated as local time
//dayjsAmericaKeep.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmericaKeep.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
猜测用户时区
¥Guessing the user timezone
dayjs.tz.guess();
在时区中解析
¥Parsing in a timezone
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
转换为时区
¥Converting to a timezone
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' 使用)
¥Set / reset the default timezone (used by 'tz')
// Setting the default timezone
dayjs.tz.setDefault("America/New_York");
// Resetting the default timezone to the system timezone
dayjs.tz.setDefault();
与时刻的差异
¥Differences to moment
使用默认时区使 moment(dateValue)
使用该时区(但 moment.tz(dateValue, timezone)
仍然需要第二个参数)。
¥Using the default timezone makes moment(dateValue)
use this timezone (but moment.tz(dateValue, timezone)
still requires the second parameter).
但 dayjs(dateValue)
始终使用本地时区,即使使用 dayjs.tz.setDefault
;只有 dayjs.tz(dateValue)
(没有第二个参数)使用默认时区。
¥But dayjs(dateValue)
always uses the local timezone, even if dayjs.tz.setDefault
is used; only dayjs.tz(dateValue)
(without second parameter) uses the default timezone.