Question

Est-il possible d'estimer le décalage par rapport à l'heure GMT (ou le fuseau horaire) d'une latitude / longitude? Je l'ai vu geonames, mais cela aurait besoin de travailler à long terme et nous ne voulons pas vraiment compter sur un service Web. Ce serait tout simplement être utilisé pour déterminer si vous souhaitez afficher « aujourd'hui » ou « ce soir » en donnant des informations aux différents utilisateurs de sorte qu'il ne serait pas besoin d'être trop précis (une heure ou deux hors serait pas mal).

Était-ce utile?

La solution

offset = direction * longitude * 24 / 360

où la direction est égal à 1 pour l'est, -1 pour l'ouest, et la longitude est (-180180)

Autres conseils

Fonder la zone de temps sur la seule longitude est très inexact en dehors des eaux internationales. Voir la carte de cette page:

http://askgeo.com/database/TimeZone

Les bandes verticales de couleur dans l'océan profond sont les soi-disant zones de temps naturelles dérivées seule de longitude, et les couleurs de la terre sont les fuseaux horaires réels par les lois régissant. Vous pouvez voir qu'ils ne s'alignent pas très bien du tout.

En fait, je suis tombé sur ce problème tout en travaillant sur un projet différent et fait la recherche et le développement substantiel sur elle. Tout d'abord mes recherches:

  • Tout d'abord, les fuseaux horaires ne sont généralement pas codé par un simple décalage par rapport à l'heure GMT (aka UTC). Cela ne prend pas en compte l'heure d'été, et les changements dans les fuseaux horaires au fil des ans. , Les ID de fuseau horaire sont plutôt utilisés pour désigner une zone géographique où le temps d'horloge officielle a été la même dans toute la région pour une période donnée (par exemple, depuis 1970). Le système le plus important de ces ID est le « ID Olson de fuseau horaire » (ensemble ces ID et leurs règles de décalage sont connues sous le nom de la « base de données tz »), qui est utilisé par Linux et d'autres systèmes d'exploitation Unix. La plupart des langages de programmation et les systèmes d'exploitation ont un support natif ou un tiers pour les ID de fuseau horaire Olson.

En termes de solutions existantes pour convertir la latitude et la longitude de fuseau horaire:

  • GeoNames.org a une vaste base de données des emplacements des points (centres des villes, aéroports, bâtiments publics, etc.), dont chacun est annotés avec un tas de métadonnées utiles, y compris l'ID de fuseau horaire Olson. Et ils ont une belle API pour vous permettre d'accéder ces via le web. Le problème est que si à moins que le point que vous interrogez est juste au-dessus d'un enregistrement dans leur base de données, vous pourriez obtenir un résultat qui est de l'autre côté d'une frontière de fuseau horaire, ou vous pourriez obtenir aucune réponse si votre requête est loin de leur point le plus proche. Le service web est aussi très lent, et ils limitent le nombre de requêtes que vous pouvez faire en un jour à un nombre relativement faible.

  • Outils de la Terre (http://www.earthtools.org/webservices.htm) a également un service pour cela, et il est beaucoup plus rapide que GeoNames, mais il retourne juste un décalage par rapport à GMT, pas de temps ID de zone, et il ne gère pas correctement pour la plupart du monde l'heure avancée. Aussi, il semble ne pas être maintenue, donc je ne sais pas si les données sont exactes plus (fuseaux horaires changent au fil du temps).

Après avoir examiné ces options et la recherche d'autres possibilités sans succès, j'ai décidé de construire ma propre solution, et ont publié à l'adresse:

http://askgeo.com

AskGeo est basé sur une carte du fuseau horaire du monde, il retourne un fuseau horaire valable pour toute latitude valide et la longitude. Il renvoie l'ID standard fuseau horaire Olson (par exemple, « Amérique / Los_Angeles ») utilisés sur Linux et la plupart des autres systèmes d'exploitation et des cadres de programmation. Il renvoie également le décalage de courant, en tenant pleinement compte de l'heure d'été.

Il est extrêmement facile à utiliser et l'utilisation est documentée sur la page principale du site. L'API prend en charge les requêtes de traitement par lots, donc si vous avez besoin de faire beaucoup de look-ups, s'il vous plaît utiliser l'interface de traitement par lots plutôt que embourber nos serveurs avec des demandes de série. Les requêtes en vrac sont également beaucoup plus rapide, donc tout le monde gagne.

Lorsque nous avons lancé cela, nous avons construit sur Google App Engine (GAE) et fait gratuitement à tous les utilisateurs. Cela a été possible parce que les prix de GAE étaient si bas à ce moment-là. Depuis lors, notre charge du serveur a considérablement augmenté et les prix de GAE est allé vers le haut. Ces deux facteurs combinés nous ont amenés à passer à Amazon Web Services pour l'hébergement et de commencer à faire payer pour un usage commercial, tout en gardant le service gratuit pour but non lucratif, les projets open source non-commerciale, et les chercheurs. Pour les utilisateurs commerciaux, nous fournissons1000 requêtes libres de laisser les clients potentiels d'évaluer l'API pour vous assurer qu'il répond à leurs besoins. Consultez le site web pour les prix et les termes.

La bibliothèque sous-jacente a été écrit en Java et en raison de la demande populaire, nous avons également publié la bibliothèque sous licence commerciale. Une documentation complète des détails de la bibliothèque et les prix sont sur le site Web.

J'espère que cela est utile. Il a certainement été utile pour le projet que je travaillais.

Si vous connaissez les utilisateurs longitude, vous savez complètement tous les aspects du temps pour eux (en négligeant quelques petites erreurs comme etc de la relativité restreinte). Le temps solaire moyen est tout simplement la différence de GMT et la longitude (degrés convertir une partie en minutes, 1 degré = 60 minutes). Vous ajoutez ou soustrayez basé sur Est ou Ouest. l'heure solaire moyenne est temps essentiellement plus précise alors les fuseaux horaires. temps jour et les heures de nuit sont variables et dépendent de la latitude, de sorte que vous utilisez quelques approximations des heures de lever et coucher du soleil en prenant en latitude et la date et l'année. Cette seule fournirait notion assez précise de jour et de nuit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top