Fuseau horaire
Le plugin Fuseau horaire ajoute les API dayjs.tz
, .tz
, .tz.guess
et .tz.setDefault
pour analyser ou afficher des dates dans différents fuseaux horaires.
var utc = require('dayjs/plugin/utc');
// import utc from 'dayjs/plugin/utc' // ES 2015
var timezone = require('dayjs/plugin/timezone'); // Dépend du 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); // Interprète la date dans le fuseau horaire local par défaut
//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); // Considère que l'heure fournie est dans le fuseau horaire UTC et la convertit vers le fuseau horaire spécifié.
//dayjsAmerica.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmerica.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
const dayjsAmericaKeep = dayjsLocal.tz(tz, true); // Considère que l'heure fournie est dans le fuseau horaire local et la convertit vers le fuseau horaire spécifié, en conservant l'heure locale.
//dayjsAmericaKeep.toISOString() -> 2014-06-01T16:00:00.000Z
//dayjsAmericaKeep.format('YYYY-MM-DDTHH:mm:ss') -> 2014-06-01T12:00:00
Estimer le fuseau horaire de l'utilisateur :
dayjs.tz.guess();
Analyser une date dans un fuseau horaire spécifique :
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
Convertir une date vers un fuseau horaire spécifique :
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
Définir / réinitialiser le fuseau horaire par défaut (utilisé par la méthode tz
) :
// Définir le fuseau horaire par défaut
dayjs.tz.setDefault('America/New_York');
// Réinitialiser le fuseau horaire par défaut au fuseau horaire local
dayjs.tz.setDefault();
Différences avec Moment.js
Avec Moment.js, l'utilisation du fuseau horaire par défaut permet à moment(dateValue)
d'utiliser ce fuseau horaire (mais moment.tz(dateValue, timezone)
requiert toujours le second paramètre).
Cependant, dayjs(dateValue)
utilise toujours le fuseau horaire local, même si dayjs.tz.setDefault
est utilisé ; seul dayjs.tz(dateValue)
(sans second paramètre) utilise le fuseau horaire par défaut.