Zona horaria
El plugin Timezone añade las APIs dayjs.tz
, .tz
, .tz.guess
y .tz.setDefault
para analizar (parsear) o mostrar información entre zonas horarias.
var utc = require('dayjs/plugin/utc');
// import utc from 'dayjs/plugin/utc' // ES 2015
var timezone = require('dayjs/plugin/timezone'); // depende del plugin 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); // se asume 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); // la hora existente se interpreta como 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); // la hora existente se interpreta como hora local
//dayjsAmericaKeep.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmericaKeep.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
Detectando la zona horaria del usuario
dayjs.tz.guess();
Analizando (parseando) en una zona horaria
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
Convirtiendo a una zona horaria específica
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
Establecer/Restablecer la zona horaria predeterminada (usada por la función tz
)
// Estableciendo la zona horaria predeterminada
dayjs.tz.setDefault('America/New_York');
// Restableciendo la zona horaria predeterminada a la del sistema
dayjs.tz.setDefault();
Diferencias con Moment.js
Al usar la zona horaria predeterminada, moment(dateValue)
usa esta zona horaria (pero moment.tz(dateValue, timezone)
sigue requiriendo el segundo parámetro).
Sin embargo, dayjs(dateValue)
siempre usa la zona horaria local, incluso si se usa dayjs.tz.setDefault
; solo dayjs.tz(dateValue)
(sin segundo parámetro) utiliza la zona horaria predeterminada.