Parfois, je me retrouve avec une date et une heure sur le site Web d'un site Web qui a déjà été ajusté à un fuseau horaire spécifique et je souhaite l'afficher exactement tel quel, quel que soit le fuseau horaire de l'utilisateur.
Par exemple, disons que j'ai cette date:
2015-01-22T16: 11: 36.36-07: 00
Le code -07: 00 signifie qu'il est en heure avancée des Rocheuses, et MomentJs le sait et s'adapte automatiquement aux utilisateurs situés dans d'autres fuseaux horaires. Par exemple, j'affiche la date et l'heure avec ce code:
moment('2015-01-22T16:11:36.36-07:00').format('l LT')
Un utilisateur situé dans l’heure centrale (-06: 00) l’affiche à 17h11 au lieu de 16h11. Comment puis-je dire à MomentJs de ne pas ajuster le fuseau horaire de l'utilisateur et d'afficher l'heure en l'état?
Utilisez la méthode du moment utc()
pour supprimer le fuseau horaire et tout afficher en temps universel.
moment.utc('2015-01-22T16:11:36.36-07:00').format('l LT')
Cela affichera l’heure telle qu’elle est en UTC sans aucun décalage de fuseau horaire. Si vous souhaitez afficher l'heure telle qu'elle a été enregistrée dans le fuseau horaire de l'utilisateur/serveur, vous pouvez analyser les informations de la zone lorsque vous créez une instance de moment et lui faire utiliser le fuseau horaire enregistré dans la chaîne analysée.
moment.parseZone('2015-01-22T16:11:36.36-07:00').format('l LT');
Avec l’une ou l’autre de ces approches, vous devriez envisager de marquer l’heure de manière à refléter le fuseau horaire correspondant. Ne pas le faire pourrait entraîner beaucoup de confusion pour les utilisateurs finaux.
moment (). utcOffset (0, true) .format ()
J'ai créé une extension pour afficher la date et l'heure sans essayer de m'ajuster au fuseau horaire de l'utilisateur:
(function (moment) {
moment.fn.nozone = function () {
var m1 = moment(this);
var offsetInMinutes = m1.utcOffset();
return m1.utc().add(offsetInMinutes, 'm');
};
}(moment));
De cette façon, il est facilement réutilisable, même dans les modèles javascript.