Bibliothèque JavaScript qui gère la conversion de fuseau horaire

Existe-t-il une bibliothèque javascript qui peut gérer les conversions de fuseau horaire (et prend en compte les règles DST et ces éléments)? Je sais qu'il y a des questions similaires, mais aucune de celles que j'ai vues semble avoir une réponse qui correspond vraiment à ma question.

Je voudrais créer une date dans le fuseau horaire A et pouvoir la manipuler (ajouter des jours, des heures et des choses comme ça) puis la convertir dans un autre fuseau horaire B. Il doit y avoir beaucoup de gens qui ont besoin de ce type de fonctionnalité , Alors je suppose qu'il devrait y avoir une bibliothèque là-bas que je n'ai pas trouvé.

Je pense que vous voulez cela:

https://github.com/mde/timezone-js

L'analyseur a besoin d'un peu de tweak pour se lancer sans l'autre bibliothèque que la personne a mise en place (au moins la dernière fois que j'ai utilisé … il y a cinq mois?), Mais sinon cela semble être une bibliothèque solide. Je l'ai utilisé sur deux sites très sensibles et à fort trafic, commerciaux, avec un grand succès.

Bien sûr, il ne fonctionne pas bien avec le sélecteur de date de jquery et momentjs (et probablement d'autres bibliothèques), alors soyez prêt à tordre ces bibliothèques pour utiliser la date de la fuseau horaire ou à une fonction de conversion vers / de sorte que vous puissiez convertir un timezonejs Date dans une date «normale» et vice versa pour entrée / sortie.

Sinon, comme exemple, cela prendra une date de la fuseau horaire Asie / Singapour et le transformera en une date Amérique / Los_Angeles tout en respectant l'heure d'été de l'année . Il utilise des fichiers de fuseau horaire Olson, qui sont disponibles gratuitement, et les analyse dans quelque chose qui est réellement très précis.

J'espère que cela vous amène au bon chemin.

–Modifier–

Oublié – quelques conseils pour l'utiliser. Si vous avez un nombre limité de fuseaux horaires, je recommande vivement de les débrouiller en disant à l'analyseur de ne pas utiliser ces derniers, alors vous n'avez pas à charger un grand fichier de tous. De plus, j'ai été piqué une fois parce que setHours, setMinutes, etc. ne suivent pas la "spécification" de setSh (0, 0, 0, 0) (c'est-à-dire heures, minutes, secondes, millis). Il y a une demande d'amélioration ici: https://github.com/mde/timezone-js/issues/48 Je ne pense pas qu'il sera difficile pour la modification du code de supporter cela, alors j'espère que nous allons Voyez-le fusionner plus tôt … ou je peux simplement le faire moi-même;)

MOMENT – Une bibliothèque de date javascript de 5kb pour l'analyse, la validation, la manipulation et les dates de mise en forme.

Moment (). Zone (); C'est la fonction que vous voudrez.

Vous pouvez également essayer les dates , mais je préfère la bibliothèque du moment, elles ont de bons documents et conservent un code délicieux.

Le moment a maintenant une librabry dédiée: moment-timezone . Vous pouvez créer votre propre tzdata en utilisant le constructeur de données timezone en ligne .

Tout comme le moment, son accord de fuseau horaire est léger et son API bien conçue.

Vous pouvez regarder cette publication: comment obtenir une fuseau horaire utilisateur en utilisant jquery?

Il semble que vous n'avez besoin d'aucune bibliothèque pour convertir les fuseaux horaires.

– EDIT (pour les personnes trop lâches pour lire les réponses d'une autre question sur Stackoverflow)

Vous pouvez utiliser l' objet Date standard de cette façon:

 var offset = (new Date).getTimezoneOffset()/60 

Et pour ceux qui sont trop lâches pour lire les spécifications …

Cela vous donnera l'heure selon l'heure universelle: var hour = (new Date).getUTCHours() Et cela vous donnera l'heure en fonction de l'heure locale: var hour = (new Date).getHours()

Compris maintenant?