2010-07-06 3 views
3

Salut j'ai une exigence typique dans mon application web, je dois remplir une zone de liste déroulante avec tous les fuseaux horaires du système et définir le fuseau horaire sélectionné d'où le client navigue .comment trouver le nom de fuseau horaire régional du système par script java

seulement timezoneoffset ne suffit pas pour gérer ce suituation, car il y a deux raisons 1.Le dernier système d'exploitation ayant plus d'un fuseau horaire avec le même décalage lumière 2.Dans jour sauvegarde automatique est activée ou désactiver (peut être détectée de Javascript) le décalage variera.

y a-t-il d'autres façons de gérer cela dans un script Java?

+1

Je ne crois pas qu'il existe un moyen de savoir ce que vous voulez savoir. Je ne comprends pas non plus pourquoi c'est important; le décalage signalé par 'getTimezoneOffset' est la chose importante de toute façon. Pour la configuration d'une préférence de site, le décalage de fuseau horaire fournit une bonne supposition de départ pour une sélection par défaut à partir d'une liste de choix, puis l'utilisateur peut fournir directement les informations. – Pointy

+0

La principale raison pour laquelle cette demande est enregistrée dans les utilisateurs sera de prendre les rapports de diverses zones régionales à partir d'un serveur centralisé. L'utilisateur doit être conscient de son propre fuseau horaire pour sélectionner le bon avant de prendre le rapport. Si l'utilisateur sélectionne un mauvais, le rapport sera normalisé dans un fuseau horaire différent. – Dharma

Répondre

0
+0

J'ai lu cet article et j'ai essayé d'utiliser chaque décalage de fuseau horaire avec DST activé ou désactivé. si nous référons les fuseaux horaires de notre système d'exploitation, il y a plus de noms de fuseaux horaires avec le même décalage par exemple (GMT +2: 00) j'ai 9 entrées. comment déterminer parmi eux un est ma requête. – Dharma

+0

Cela ne fait aucune différence pour votre rapport, car un fuseau horaire est une région sur Terre, plus ou moins délimitée par des lignes de longitude, vous avez 9 entrées qui tombent dans la même ligne de longitude. ce qui compte est l'heure d'été (c'est pourquoi dans l'article vous ne trouvez que 2 entrées pour (GMT +2: 00).Il suffit de combiner les entrées basées sur (SupportsDaylightSavingTime, BaseUtcOffset) pour avoir: (UTC + 02: 00 - DST: Vrai) Amman, Athènes, Bucarest, Istanbul, Beyrouth, Le Caire, Helsinki, Kiev, Riga, Sofia, Tallinn, Vilnius, Jérusalem, Minsk, Windhoek. (UTC + 02: 00, DST: Faux) Harare, Pretoria –

1

Réponse courte: Utilisez ce projet JavaScript open source: jsTimezoneDetect. Il est basé sur le code que MK a lié ici, ce qui est génial, mais pas assez puisque différentes régions dans le même fuseau horaire commencent leur heure d'été à différents moments. L'hémisphère joue également un facteur.

Réponse longue: Un exemple est le fuseau horaire UTC -07: 00 qui comporte essentiellement trois sous-fuseaux horaires.

  • US Heure normale (pas de sauvegarde de la lumière du jour ... c'est Arizona)
  • Mountain Time US (avec l'heure d'été)
  • Mexique Montagne temps (avec l'heure d'été)

En supposant Si vous connaissez le décalage UTC de votre utilisateur, vous devez maintenant vérifier si votre fuseau horaire utilise l'heure d'été. Créez une date de janvier et un juin et vérifiez ces deux dates. Si leurs décalages UTC diffèrent, vous êtes dans un fuseau horaire qui utilise l'heure d'été. Dites que vous avez déterminé que votre utilisateur est -07: 00 avec l'heure d'été, soit US Mountain Time (Amérique/Denver) ou Mexico Mountain Time (Amérique/Chihuahua). Comment les distinguer? Eh bien, la date à laquelle ils commencent leurs économies d'heure diffèrent.

L'heure d'été américaine commence en 2011 commence le 13 mars et au Mexique le 4 avril. Commençons donc avec Denver et vérifiez si le 13 mars est l'heure d'été, non? Ok, vérifiez si le 4 avril est l'heure d'été. Oui? Bingo.

Questions connexes