J'essaie d'ajuster une heure en utilisant un décalage de fuseau horaire et un horodatage UTC.
J'utilise le code suivant:
var date = {
utc: '2013-10-16T21:31:51',
offset: -480
}
var returnDate = moment(date.utc).utc().zone(date.offset).format('MM/DD/YYYY h:mm A');
Ce que j'attends c'est: 10/16/2013 1:31 PM
mais je me retrouve avec 10/17/2013 9:31 AM
Voici ce qui a fonctionné pour moi:
var date = {
utc: '2013-10-16T21:31:51',
offset: 480
}
var returnDate = moment.utc(date.utc).zone(date.offset).format('MM/DD/YYYY h:mm A');
Si vous avez remarqué, j'ai changé le décalage en un nombre positif. Cela a donné le résultat souhaité. Si le décalage a été laissé à -480
la sortie était 10/17/2013 5:31 AM
.
Il existe une méthode moment # UTC qui initialise la date en UTC par rapport à l'heure locale.
J'utilise la bibliothèque jsTimezoneDetect pour déterminer le nom du fuseau horaire au lieu du décalage.
Ensuite, utilisez ceci sur un horodatage UTC:
timestamp = moment.tz(timestamp, tz.name());
timestamp.format('MM/DD/YYYY h:mm A');