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:00
Wykrywanie 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.000Z
Konwersja 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.000Z
Ustawianie / 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).