Fuseau horaire Localisation Services Web
Données brutes sur les limites des fuseaux horaires
Les projets suivants ont été précédemment des sources de données sur les limites des fuseaux horaires, mais ne sont plus activement maintenus.
Implémentations hors ligne de la géolocalisation par fuseau horaire
Les implémentations qui utilisent les données du constructeur de fuseaux horaires
Les implémentations qui utilisent les anciennes données tz_world
Bibliothèques qui appellent l'un des services web
-
fuseau horaire - Gemme Ruby qui appelle GeoNames
-
AskGeo possède ses propres bibliothèques pour les appels à partir de Java ou de .Net.
-
Noms géographiques a des bibliothèques clientes pour à peu près tout
Services web auto-hébergés
Autres idées
Veuillez mettre à jour cette liste si vous en connaissez d'autres.
Notez également que l'approche de la ville la plus proche peut ne pas donner le "bon" résultat, mais seulement une approximation.
Conversion en zones Windows
La plupart des méthodes répertoriées renvoient un identifiant de fuseau horaire IANA. Si vous devez convertir un fuseau horaire Windows pour l'utiliser avec la méthode TimeZoneInfo
dans .NET, utilisez la classe TimeZoneConverter bibliothèque.
N'utilisez pas zone.tab
El base de données tz comprend un fichier appelé zone.tab
. Ce fichier est principalement utilisé pour présenter une liste de fuseaux horaires parmi lesquels l'utilisateur peut choisir. Il comprend les coordonnées de latitude et de longitude du point de référence de chaque fuseau horaire. Cela permet de créer une carte mettant en évidence ces points. Par exemple, voir la carte interactive présentée sur la page d'accueil du fuseau horaire .
Bien qu'il puisse être tentant d'utiliser ces données pour résoudre le fuseau horaire à partir des coordonnées de latitude et de longitude, il faut tenir compte du fait qu'il s'agit de points et non de frontières. Le mieux que l'on puisse faire serait de déterminer le le plus proche qui, dans de nombreux cas, ne sera pas le bon point.
Prenons l'exemple suivant :
Les deux carrés représentent des fuseaux horaires différents, où le point noir dans chaque carré est l'emplacement de référence, comme ce que l'on peut trouver dans zone.tab. Le point bleu représente l'emplacement pour lequel nous essayons de trouver un fuseau horaire. Il est clair que cet endroit se trouve dans la zone orange à gauche, mais si nous ne regardons que la distance la plus proche du point de référence, il se résout dans la zone verdâtre à droite.
4 votes
J'ai remarqué que l'horodatage UTC n'est pas nécessaire pour déterminer le fuseau horaire. Par exemple, un long/lat à Londres n'est pas suffisant pour déterminer si le fuseau horaire est GMT ou BST (British Summer Time / daylight savings). Ainsi, pour déterminer le fuseau horaire correct, vous avez sûrement besoin de lat, long et d'un horodatage UTC.
12 votes
@MichaelWaterfall - Pour déterminer si vous êtes en GMT (UTC+0000) ou en BST (UTC+0100) - oui, vous avez tout à fait raison. Mais il s'agit de fuseaux horaires offsets et non les identifiants de fuseau horaire. Les deux sont couverts par le même
"Europe/London"
identifiant du fuseau horaire de la base de données des fuseaux horaires de l'IANA.0 votes
Ah ok, et le décalage d'heure d'été sera ajouté (si nécessaire) une fois le rendu d'une heure avec un identifiant de fuseau horaire donné ?
0 votes
@Michael - cela dépend de l'implémentation spécifique, mais en général, oui.
2 votes
Il est toujours possible d'exiger un timestamp UTC. Par exemple, la Russie a changé les frontières des fuseaux horaires 4 fois au cours des 6 dernières années. fr.wikipedia.org/wiki/Time_in_Russia
0 votes
Avez-vous des informations sur ce que @Arnial a dit ? Utiliser la lat et la long + l'horodatage UTC pour déterminer le fuseau horaire ? Ou un endroit qui donne des données historiques sur les GéoJsons ?
0 votes
@thur - lat+lon sont suffisants pour déterminer fuseau horaire avec l'une des options proposées ici. Par exemple,
55.75, 37.62
est suffisant pour obtenir"Europe/Moscow"
. Vous aurez besoin d'un horodatage et d'une base de données de fuseaux horaires pour déterminer le décalage de l'UTC pour cet endroit à une heure donnée. Par exempleEurope/Moscow @ 2016-01-01T00:00:00 => UTC+3
peroEurope/Moscow @ 2014-01-01T00:00:00 => UTC+4
. Voir "fuseau horaire != décalage" dans la rubrique wiki tag de fuseau horaire2 votes
@thur - En ce qui concerne les frontières elles-mêmes, il existe quelques différences historiques d'une année à l'autre, en fonction du début ou de la fin des conflits frontaliers. Cependant, lorsqu'un changement comme celui décrit par Arnial se produit, le tzdb crée un nouveau fuseau horaire pour la région concernée, de sorte que tout le temps dans cette région est pris en compte - y compris les différences historiques. Nous appelons cela un "découpage en zones". Un bon exemple russe serait
Europe/Astrakhan
qui s'est séparée deEurope/Volgograd
avec tzdb 2016b.0 votes
L'entrée ne devrait-elle pas être à la fois le lieu et l'heure UTC, car les fuseaux horaires peuvent changer pour le même lieu exact si l'heure change ?
0 votes
@naaz - Non. Lisez le fil de commentaires juste au-dessus.
0 votes
Voir aussi wiki communautaire SO pour le tag de fuseau horaire .
0 votes
@Sero. Oui. Le "metazones.xml" de cldr.unicode.org inclut les changements historiques. Actuel metazones.xml . Plus précisément, en plus du métazone actuel, il indique, pour chaque "id de fuseau horaire", le "métazone" en vigueur pour chaque plage de dates. (Quelque part ailleurs, il doit y avoir une spécification concernant les règles de décalage horaire pour un métazone. Par exemple, le décalage horaire "standard" et la plage de dates par an qui est décalée d'une heure pour l'heure d'été). Je demande comment extraire quelques informations de ceci aquí .
0 votes
@Sero - Il est probable que les diverses API et bibliothèques hors ligne mentionnées dans la réponse acceptée utilisent des informations historiques similaires, ainsi que les règles relatives à l'heure d'été. (La date exacte à laquelle l'heure d'été commence/se termine est spécifique à l'année, telle que définie par l'entité géopolitique contenant l'emplacement lat/long).