Zeitzone
Das Zeitzonen-Plugin erweitert Day.js um die APIs dayjs.tz
, .tz
, .tz.guess
und .tz.setDefault
, um Datumsangaben in verschiedenen Zeitzonen zu analysieren oder darzustellen.
var utc = require('dayjs/plugin/utc');
// import utc from 'dayjs/plugin/utc' // ES 2015
var timezone = require('dayjs/plugin/timezone'); // benötigt das 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); // interpretiert die Zeit als lokale Zeit
//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); // Konvertiert die bestehende Zeit von der lokalen Zeitzone in die angegebene Zeitzone
//dayjsAmerica.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmerica.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T08:00:00
const dayjsAmericaKeep = dayjsLocal.tz(tz, true); // Behält die bestehende Zeit bei und ändert nur die Zeitzone
//dayjsAmericaKeep.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmericaKeep.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
Benutzerzeitzone ermitteln
dayjs.tz.guess();
Analyse einer Datumsangabe in einer bestimmten Zeitzone
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
Umwandlung einer UTC-Datumsangabe in eine Zeitzone
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
Setzen/Zurücksetzen der Standardzeitzone (wird von tz
verwendet)
// Setzen der Standardzeitzone
dayjs.tz.setDefault('America/New_York');
// Zurücksetzen der Standardzeitzone auf die Systemzeitzone
dayjs.tz.setDefault();
Unterschiede zu Moment.js
In Moment.js führt die Verwendung der Standardzeitzone dazu, dass moment(dateValue)
diese Zeitzone verwendet. moment.tz(dateValue, timezone)
benötigt jedoch weiterhin den zweiten Parameter.
Im Gegensatz dazu verwendet dayjs(dateValue)
immer die lokale Zeitzone, auch wenn dayjs.tz.setDefault
verwendet wird. Nur dayjs.tz(dateValue)
(ohne zweiten Parameter) verwendet die Standardzeitzone.