GPS-position der Zeitzone
Ich würde gerne wissen, die lokale Zeit, wo mein Benutzer sendet seine Anfrage ab.
Im Grunde ist es so etwas wie eine Funktion wie diese
var localTime = getLocalTime( lat, long );
Ich bin mir nicht sicher, ob eine einfache division auf den lat arbeiten konnte, da die meisten Länder nicht perfekten geometrischen Formen.
Jede Hilfe wäre toll. Jede Sprache akzeptiert. Ich möchte vermeiden, fordern entfernte APIs.
- Gut, es geht um eine remote-API, aber werfen Sie einen Blick auf die Antwort auf diese Frage. Es kann Sie geben, was Sie wollen: stackoverflow.com/questions/41504/....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Google Zeitzone API zu sein scheint, was Sie nach. Es sind jedoch keine Kostenlose tier.
Der shape-Datei verwendet, um zu berechnen, Zeitzone nicht gepflegt mehr.
Ich gerade vor dem gleichen Problem heute, und ich bin nicht sicher, wie relevant meine Antwort ist nach all dieser Zeit, aber ich im Grunde nur schrieb eine Python-Funktion, die tut, was Sie wollen. Sie können es hier finden.
https://github.com/cstich/gpstotz
Edit:
Wie bereits erwähnt in den Kommentaren, ich sollte auch post-code. Der code basiert auf Eric Muller ' s shapefile von Zeitzonen, die du hier bekommen kannst - http://efele.net/maps/tz/world/.
Edit 2:
Als es dreht out shape-Dateien haben eine etwas archaische definition von äußeren und inneren Ringe (im Grunde äußeren Ringe sind mit Hilfe der rechten-hand-Regel, während die inneren Ringe sind mit Hilfe der linken-hand-Regel). In jedem Fall fiona scheint zu kümmern, und ich aktualisierte den code entsprechend.
War ich auf der Suche für die gleiche Sache, paar Tage her und leider konnte ich nicht finden, ein API oder simple Funktion, die es tut. Der Grund dafür ist, wie Sie sagten, die Länder haben keine perfekten geometrischen Formen. Sie haben, um eine Vertretung des Bereichs von jeder Zeitzone und zu sehen, wo dein Punkt liegt. Ich denke, das wird ein Schmerz und ich habe keine Ahnung, ob es getan werden kann, überhaupt.
Die einzige, die ich fand, wird hier beschrieben: Bestimmen von timezone Breite/Länge ohne die Verwendung von web-services wie Geonames.org . Im Grunde benötigen Sie eine Datenbank mit Informationen zu Zeitzonen und Sie versuchen, um zu sehen, welcher am nächsten zu Ihrem Punkt von Interesse.
Allerdings war ich auf der Suche für statische Lösungen(ohne internet), also, wenn Sie über eine internet-Verbindung, die Sie verwenden können: http://www.earthtools.org/webservices.htm bietet eine webservice-geben Sie die Zeitzone angegebenen lat/lon Koordinaten.
Ab 2019, Google API keine freien Schicht und der Datenquelle @cstich Antwort nicht mehr gepflegt wird.
Wenn Sie möchten, eine API, timezonedb.com bietet einen kostenlosen tier-rate-begrenzt auf 1 request/Sekunde.
Der ursprüngliche maintainer der Daten verwendet, die von @cstich link zu dieses Projekt das abrufen von Daten aus OpenStreetMap. Die readme-Datei enthält den link zu suchen Bibliotheken in einer Vielzahl von Sprachen.
Konnte nicht nutzen Sie einfach die Nutzer-IP-Adresse, um festzustellen, welche der Sie Leben ? Und dann verwenden Sie ein array von (Länder | Unterschied zu GMT), um die lokale Zeit.