web-dev-qa-db-fra.com

Comment obtenir la liste des fuseaux horaires à l'aide de la bibliothèque moment.js?

Je dois faire une liste <select> de tous les fuseaux horaires mondiaux réels. Comment obtenir un tableau avec une liste de fuseaux horaires?

34
user619271

Pour le fuseau horaire, vous devez ajouter manuellement le fichier JS de fuseau horaire créé par vous-même.

Dans cette page , vous pouvez sélectionner les zones et générer un fichier à charger après avoir chargé moment.js tout d'abord.

Vous devriez avoir quelque chose comme ça, jetez un oeil:

<script src="/javascripts/modules/moment/moment-with-langs.min.js"></script>
<script src="/javascripts/modules/moment/moment-timezone.min.js"></script>
<script src="/javascripts/modules/moment/moment-timezone-data.js"></script>

Le JS moment-timezone-data.js est la liste personnalisée des fuseaux horaires.

Cependant, jusqu'à présent, je sais, MomentJS ne ne renvoie pas pour vous une liste de tous les fuseaux horaires, car le fuseau horaire peut également être modifié. Si vous devez remplir une balise select, je vous suggère d'analyser manuellement la liste des fuseaux horaires à partir du lien ci-dessus.

3
Ito

Incluez d'abord moment-timezone Avec les données, puis vous pouvez utiliser moment.tz.names();

40
marcieng
18
jkabugu

Attention, moment.js n'est pas fourni avec moment-timezone.js par défaut, vous devez l'obtenir.

bower install moment-timezone --save
npm install moment-timezone --save
Install-Package Moment.Timezone.js

Ou Downlaod

Ensuite, vous pouvez exiger un tableau de fuseaux horaires de cette manière:

var timezones = moment.tz.names();

Une autre astuce utile est que vous pouvez définir (deviner) le fuseau horaire de l'utilisateur actuel, vous n'avez donc pas à obliger l'utilisateur à rechercher son fuseau horaire dans une énorme liste, ou vous pouvez définir un fuseau horaire par défaut, puis laisser l'utilisateur le modifier s'il en a besoin.

var currentUserTimezone = moment.tz.guess();

En outre, vous pouvez obtenir l'abréviation des fuseaux horaires si vous en avez besoin, au cas où vous devriez fournir et un tableau d'abréviations des fuseaux horaires:

moment.tz('America/Los_Angeles').format('z') //PDT

documentation complète de moment-timezone.js

8
Carlos B

Il y a 378 fuseaux horaires. Un fuseau horaire est une combinaison de règles sur le temps, y compris l'heure d'été, qui était en vigueur pour n'importe quelle période, dans n'importe quel lieu, quelle que soit sa taille - comme une ville individuelle dans l'Indiana qui a décidé de passer à l'heure d'été pour deux années dans les années 40. Ou, pour prendre un exemple plus récent, le fuseau horaire nord-coréen, qui vient d'être augmenté de 30 minutes. Ou une douzaine de fuseaux horaires juste pour l'Antarctique.

Je doute que vous souhaitiez afficher tous ces fuseaux horaires dans votre menu déroulant. Vous devez choisir le 50-100 le plus courant. Vous pouvez soit le faire vous-même, soit copier la liste à partir d'un site comme Google. Vous voulez probablement choisir au moins un fuseau horaire dans chacun des 24 décalages, donc peu importe où se trouve une personne, elle peut en trouver un qui correspond à ce genre.

4
user663031

Inclure moment-timezone.js de cdn.

Maintenant, utilisez moment.tz._names Pour obtenir les fuseaux horaires en tant qu'objet. La méthode moment.tz.names() donne également les fuseaux horaires sous forme de tableau, mais c'est plus lent.

Les versions antérieures à 0.4.0, n'ont pas l'objet moment.tz._names Donc la méthode moment.tz.names() doit être utilisée.

2
Vignesh Raja