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.
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
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