JS fuseaux horaires actuels
-
21-12-2019 - |
Question
Je viens de créer un blog de script, mais quand j'ajoute un commentaire.
Le timestamp dans la base de données est 2014-07-29 18:55:00
même que l'horloge de mon PC est 2014-07-29 20:55:00
.
Donc je voudrais changer l'heure en fonction du fuseau horaire.
Alors, j'ai essayé avec ce code (où le timestamp est 2014-07-29 18:55:00
):
var UTC = moment.tz(timestamp, "UTC");
timestamp = UTC.clone().tz(timezone).format('YYYY/MM/DD H:mm:ss');
Note: window.timezone
est définie à l'aide du code suivant:
var tz = jstz.determine();
var timezone = tz.name();
Le temps que je veux sortir est 2014/07/29 20:55:00
, mais j'obtiens ceci: 2014/07/29 17:53:47
Je suis en utilisant les bibliothèques suivantes de ce code ci-dessus:
Espérons que quelqu'un comprend ce qui se passe.
NOTE:Je vis dans Europe/Denmark
qui ont le fuseau horaire UTC/GMT +2 hours
La solution
En outre, pour le script, moment-timezone besoin de données pour fonctionner.Si vous n'avez pas les données sont chargées, dans la version 0.1.x il va utiliser le fuseau horaire local - comme si vous aviez appelé moment()
sans tz
spécifié. Cela a été corrigé pour la prochaine version 0.2.0, telle qu'elle donne une erreur au lieu d'silencieusement de faire la mauvaise chose.
Normalement, vous pouvez utiliser les données constructeur de fournir des données pour les fuseaux horaires vous intéressait.Cependant, il est actuellement hors ligne parce que le format des données changé dans la dernière version et l'auteur n'a pas encore eu le temps de terminer les mises à jour requises.
En attendant, vous pouvez utiliser l'un des "données-inclus" des versions, téléchargeable en haut de la page principale - par exemple, l'utilisation moment-timezone-2010-2020.js
au lieu de simplement moment-timezone.js
.
Aussi, vous depuis que vous utilisez jsTimeZoneDetect - vous devez tester la valeur retournée par jstz.determine()
pour s'assurer qu'il est en effet le temps de la zone que vous attendiez.Le +2, les décalages sont notoirement difficiles à tester.Voir certains de les problèmes connus.
Autres conseils
Vous pourriez réglez le fuseau horaire
moment().tz("Europe/Denmark").format();