2017-09-20 6 views
1

J'ai besoin d'une bibliothèque capable de convertir le fuseau horaire en décalage utc. J'ai la liste des villes américaines, et je connais leurs zones (PST, EST ....) et les emplacements. Donc, ma stratégie peut êtreFuseau horaire ou emplacement au décalage UTC

  • library.getOffset ('emplacement de la ville)
  • de myLibraryOrOtherLibrary.getOffset ('EST')

Je sais moment.js bibliothèque bibliothèque ne .Mais soutenir tous les Américains villes pour quelque chose comme ci-dessous

moment().tz("America/Los_Angeles").format(); 

Dois-je mettre en œuvre quelque chose de moi-même ou il y a une autre bibliothèque ou je peux utiliser moment.js d'une autre manière?

Répondre

2

Quelques choses:

  • Vous ne pouvez pas obtenir un fuseau horaire ou décalé par rapport à une abréviation seule, parce qu'il ya des ambiguïtés comme CST qui pourrait être -5, -6, ou selon la façon dont 8 vous l'interpréter ("heure normale du Centre", "heure normale de Cuba", "heure normale de la Chine").

  • Vous ne pouvez pas non plus obtenir un fuseau horaire ou un décalage à partir d'un seul nom de ville, car de nombreuses villes portant le même nom se trouvent à différents endroits dans le monde. Par exemple, Paris pourrait signifier Paris, France ou cela pourrait signifier Paris, Texas, USA ou any of the other places called Paris. Vous pouvez également obtenir différentes orthographes d'une ville pour différentes langues, en fonction de la ville, comme la capitale de l'Ukraine étant orthographié Kiev en anglais et Kyiv en ukrainien. Moment prend en charge la liste standard IANA time zone identifiers. Ce ne sont pas toutes les villes du monde, mais plutôt une chaîne spécifique qui est parfois basée sur un grand nom de ville. Il y a beaucoup d'exceptions.

En fin de compte, la meilleure façon de résoudre ce problème est en deux étapes:

  1. vos emplacements Resolve pour rapprocher les coordonnées de latitude et de longitude. Ceci est appelé géocodage, et il existe un certain nombre d'API et de bases de données disponibles qui peuvent vous aider avec ceci. Par exemple, Google Maps Geocoding API.

  2. Résolvez les coordonnées à l'aide d'un identificateur de fuseau horaire IANA. Il y a beaucoup de méthodes pour ceci, y compris le Google Maps Time Zone API, et beaucoup d'autres énumérés in this answer. Vous pouvez ensuite utiliser cet identifiant avec Moment.js et d'autres.