Timezone
O plugin de fuso horário adiciona as APIs dayjs.tz
, .tz
, .tz.guess
e .tz.setDefault
para analisar ou exibir datas e horários em diferentes fusos horários.
var utc = require('dayjs/plugin/utc');
// import utc from 'dayjs/plugin/utc' // ES 2015
var timezone = require('dayjs/plugin/timezone'); // Depende do 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); // Considera 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); // O tempo existente é tratado como UTC e convertido para o fuso horário especificado.
// 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); // O tempo existente é tratado como tempo local e mantido no fuso horário especificado.
// dayjsAmericaKeep.toISOString() -> 2014-06-01T16:00:00.000Z
// dayjsAmericaKeep.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
Identificando o fuso horário do usuário:
dayjs.tz.guess();
Analisando uma data e hora em um fuso horário específico:
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
Convertendo uma data e hora para um fuso horário específico:
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
Definir/Redefinir o fuso horário padrão (usado por .tz
quando nenhum fuso horário é especificado):
// Definindo o fuso horário padrão
dayjs.tz.setDefault('America/New_York');
// Redefinindo o fuso horário padrão para o fuso horário do sistema
dayjs.tz.setDefault();
Diferenças em relação ao Moment.js
Ao usar o fuso horário padrão, moment(dateValue)
utiliza esse fuso horário (mas moment.tz(dateValue, timezone)
ainda exige o segundo parâmetro).
No entanto, dayjs(dateValue)
sempre utiliza o fuso horário local, mesmo que dayjs.tz.setDefault
seja utilizado. Apenas dayjs.tz(dateValue)
(sem o segundo parâmetro) utiliza o fuso horário padrão.