Strefa czasowa
Dodatek Timezone rozszerza API dayjs o funkcje .tz, .tz.guess i .tz.setDefault, umożliwiające analizowanie i wyświetlanie dat w różnych strefach czasowych.
var utc = require('dayjs/plugin/utc');
// import utc from 'dayjs/plugin/utc' // ES 2015
var timezone = require('dayjs/plugin/timezone'); // zależny od pluginu 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); // interpretuje jako 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); // konwertuje czas UTC na strefę czasową America/New_York
//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); // interpretuje czas lokalny jako America/New_York i konwertuje na UTC
//dayjsAmericaKeep.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmericaKeep.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00Wykrywanie strefy czasowej użytkownika
dayjs.tz.guess();Parsowanie daty w określonej strefie czasowej
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.000ZKonwersja daty na określoną strefę czasową
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.000ZUstawianie / resetowanie domyślnej strefy czasowej
// Ustawianie domyślnej strefy czasowej
dayjs.tz.setDefault('America/New_York');
// Resetowanie domyślnej strefy czasowej do strefy czasowej systemu
dayjs.tz.setDefault();Różnice w porównaniu do biblioteki Moment.js
W Moment.js, użycie domyślnej strefy czasowej powoduje, że funkcja moment(dateValue) używa tej strefy. Natomiast moment.tz(dateValue, timezone) nadal wymaga podania drugiego parametru (strefy czasowej).
W Day.js, funkcja dayjs(dateValue) zawsze używa lokalnej strefy czasowej, nawet po użyciu dayjs.tz.setDefault. Domyślna strefa czasowa jest używana tylko przez dayjs.tz(dateValue) (bez drugiego parametru).
