Časové zóny
Plugin časové zóny přidává do API dayjs
metody .tz
, .tz.guess
a .tz.setDefault
pro analýzu a zobrazení dat a časů v různých časových zónách.
var utc = require('dayjs/plugin/utc');
// import utc from 'dayjs/plugin/utc' // ES 2015
var timezone = require('dayjs/plugin/timezone'); // závisí na 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); // předpokládá se 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); // existující čas je považován za 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); // existující čas je považován za lokální čas
//dayjsAmericaKeep.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmericaKeep.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
Zjištění časové zóny uživatele
dayjs.tz.guess();
Analýza data a času v konkrétní časové zóně
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
Převod data a času do jiné časové zóny
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
Nastavení a resetování výchozí časové zóny (používá se s .tz
)
// Nastavení výchozí časové zóny
dayjs.tz.setDefault('America/New_York');
// Resetování výchozí časové zóny na systémovou časovou zónu
dayjs.tz.setDefault();
Rozdíly oproti Moment.js
V Moment.js, použití výchozí časové zóny způsobí, že moment(dateValue)
použije tuto časovou zónu. Nicméně, moment.tz(dateValue, timezone)
stále vyžaduje druhý parametr (název časové zóny).
Na rozdíl od toho, dayjs(dateValue)
vždy používá lokální časovou zónu, i když je použito dayjs.tz.setDefault
. Pouze dayjs.tz(dateValue)
(bez druhého parametru) používá výchozí časovou zónu.