Wie man eine Zeitzone aus einem Ort mit Breitengrad-und Längengrad-Koordinaten?
Gibt es zu viele Fragen auf StackOverflow zu lösen, eine Zeitzone aus einer Lage. Diese community wiki ist der Versuch einer Konsolidierung aller gültigen Antworten.
Bitte aktualisieren Sie meine Antwort, oder fügen Sie Ihre eigene, wie Sie sehen, passen.
Die Frage
Angesichts der breiten-und Längengrad eines Ortes, wie wird man wissen, welche Zeitzone ist in der Tat in die Lage?
In den meisten Fällen suchen wir für ein IANA - /Olson time-zone-id, obwohl einige Leistungen gibt nur einen UTC-offset oder eine andere time-zone-id. Bitte Lesen Sie die timezone info-tag für details.
Eine Sache, die ich bemerkt habe, ist der Mangel an einem UTC-Zeitstempel-Anforderung, wenn die Bestimmung der Zeitzone. Zum Beispiel, eine long/lat in London reicht nicht aus, um zu bestimmen, Wetter, die Zeitzone ist GMT oder BST (British Summer Time / daylight savings). Ja, sicherlich, um die richtige Zeitzone, die Sie brauchen, lat, long und einen UTC-Zeitstempel.
Um festzustellen, ob Sie sind in GMT (UTC+0000) oder MESZ (UTC+0100) - ja, Sie sind absolut richtig. Aber diese sind Zeit-zone offsets, nicht Zeit-zone Bezeichner. Beide sind unter den gleichen
Ah okay, und die daylight savings offset Hinzugefügt (wenn erforderlich) auf einmal Rendern einer Zeit mit einer bestimmten Zeit-zone identifier?
das hängt von der jeweiligen Implementierung, aber in der Regel, ja.
Es ist immer noch erfordern UTC-Zeitstempel. Zum Beispiel Russland ändern Zeitzonen boundarys 4 mal für die letzten 6 Jahre. en.wikipedia.org/wiki/Time_in_Russia
Um festzustellen, ob Sie sind in GMT (UTC+0000) oder MESZ (UTC+0100) - ja, Sie sind absolut richtig. Aber diese sind Zeit-zone offsets, nicht Zeit-zone Bezeichner. Beide sind unter den gleichen
"Europe/London"
time-zone-id von der IANA time zone database.Ah okay, und die daylight savings offset Hinzugefügt (wenn erforderlich) auf einmal Rendern einer Zeit mit einer bestimmten Zeit-zone identifier?
das hängt von der jeweiligen Implementierung, aber in der Regel, ja.
Es ist immer noch erfordern UTC-Zeitstempel. Zum Beispiel Russland ändern Zeitzonen boundarys 4 mal für die letzten 6 Jahre. en.wikipedia.org/wiki/Time_in_Russia
InformationsquelleAutor Matt Johnson | 2013-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zeitzone Standort Web Services
Raw Zeitzone Grenze Daten
Folgende Projekte wurden bisher Quellen der Zeitzonen-Grenze Daten, aber sind nicht mehr aktiv gepflegt.
Zeit-Zone, Geolocation, Offline-Implementierungen
Implementierungen, verwenden Sie die Zeitzone-Grenze-generator Daten
Implementierungen, die mit den älteren tz_world Daten
Bibliotheken, rufen Sie eine der web-services
Andere Ideen
Bitte aktualisieren Sie diese Liste, wenn Sie von allen anderen wissen
Beachten Sie auch, dass die nächste-city-Ansatz kann nicht die Ausbeute, die "richtige" Ergebnis, sondern nur eine Annäherung.
Umstellung Auf Windows-Zonen
Meisten der aufgeführten Methoden zurück IANA time zone-id. Wenn Sie brauchen, um zu konvertieren, um eine Windows Zeitzone für die Verwendung mit der
TimeZoneInfo
Klasse .NET, verwenden Sie die TimeZoneConverter Bibliothek.Nicht verwenden-zone.Registerkarte
Den tz-Datenbank enthält eine Datei namens
zone.tab
. Diese Datei ist in Erster Linie verwendet, um eine Liste der Zeitzonen, die für einen Benutzer zur Auswahl. Es umfasst den breiten-und Längengrad-Koordinaten der Bezugspunkt für jede Zeitzone. Dies ermöglicht eine Karte erstellt werden, die Hervorhebung dieser Punkte. Zum Beispiel finden Sie in der interaktiven Karte angezeigt, auf moment-timezone-Startseite.Zwar mag es verlockend sein, diese Daten zu nutzen, um zu lösen die Zeitzone von Längen-und Breitengrad-Koordinaten, der Ansicht, dass diese Punkte nicht hinweg. Die besten, die man machen könnte, wäre die Festlegung der nächsten Punkt, die in vielen Fällen nicht den richtigen Punkt.
Betrachten Sie das folgende Beispiel:
Die beiden Quadrate stellen die unterschiedlichen Zeitzonen, in denen der schwarze Punkt in jedem Quadrat ist die Referenz-Lage, wie das, was gefunden werden kann in der zone.tab. Der Blaue Punkt repräsentiert die Position, die wir versuchen zu finden, eine Zeit-zone. Eindeutig, diese Lage ist in der orange zone auf der linken Seite, aber wenn man mal nur auf nächste Entfernung zum Bezugspunkt ist, es löst die grünliche zone auf der rechten Seite.
Allerdings, so wie ich das verstehe, im moment gibt es keine offline-Datenbank die Zeitzone info und offset von UTC, basierend auf den Lage-Koordinaten?
wie kann ich die Verwendung von geonames-client-Bibliotheken
Dies ist eine fantastische Liste, danke! Google sieht aus wie die offensichtliche Wahl, aber ich war überrascht, als Sie mir sagen, London ist in GMT, wenn in der Tat ist es in der BST-im moment. Für New York hatte es die richtige Sommer-Einstellung.
Diese neue Google-API-Tarife sind erpresserisch. 200 Anfrage für 1$, wie von 7/18. Das ist eine 10-Fach erhöhen.
InformationsquelleAutor
Wie wäre es mit dieser Lösung für node.js
https://github.com/mattbornski/tzwhere
Und dessen Python-Gegenstück:
https://github.com/pegler/pytzwhere
InformationsquelleAutor zbinsd
Wir an Teleport gerade begonnen die öffnung unserer API und einer der usecases ist auch auszusetzen, TZ-Informationen für die Koordinaten.
Beispielsweise könnte man fordern alle unsere verfügbaren TZ-Informationen für die Koordinaten in der folgenden Weise:
Dieser zurückkehren würde, die folgenden
Für das Beispiel, das ich verwendet ./jq für JSON-parsing.
InformationsquelleAutor Joonathan
Können Sie geolocator.js für leicht bekommen, Zeitzone und mehr...
Es nutzt die Google APIs, die einen Schlüssel erfordert. Also, zuerst konfigurieren Sie geolocator:
Bekommen, Zeitzonen, wenn Sie haben die Koordinaten:
Beispiel-Ausgabe:
Suchen, dann bekommen Sie Zeitzone und mehr
Wenn Sie nicht über die Koordinaten, können Sie die position user ersten.
Beispiel unten wird zuerst versuchen, die HTML5-Geolocation-API, um die Koordinaten. Wenn es fehlschlägt oder abgelehnt wird, erhalten Sie die Koordinaten per Geo-IP-look-up. Endlich, es wird die Zeitzone und mehr...
Beispiel-Ausgabe:
InformationsquelleAutor Onur Yıldırım
Hier ist, wie können Sie das Google-Skript-editor, um die timezoneName und timeZoneId innerhalb einer gsheet.
Schritt 1. Holen Sie sich einen API-Schlüssel für Google timezone API
Schritt 2. Erstellen Sie eine neue gsheet. Unter dem Menü "Extras", klicken Sie auf den 'script editor'. Fügen Sie den folgenden code:
Schritt 3. Speichern und veröffentlichen Sie Ihre
getTimezone()
- Funktion und verwenden Sie es wie gezeigt im Bild oben.InformationsquelleAutor Stiño
Ok, hier die kurze Version ohne die richtigen NTP-Zeit:
Und verwenden Sie es mit:
InformationsquelleAutor Ingo
Wenn Sie Sie verwenden möchten geonames.org dann verwenden Sie diesen code. (Aber geonames.org ist sehr langsam manchmal)
Und verwenden Sie es mit:
InformationsquelleAutor Ingo
Es ist in der Tat wichtig zu erkennen, dass dies ein komplizierteres problem, als die meisten vermuten würde. In der Praxis werden viele von uns sind auch bereit, zu akzeptieren, eine Reihe von code, der arbeitet für "so viele Fälle wie möglich", wenn mindestens die fatalen Probleme können identifiziert und minimiert Kollektiv. Also habe ich mit diesem post alle, und der Geist der OP in den Sinn. Schließlich, für Gebrauchswert für andere, die versuchen, um zu konvertieren GPS-Zeitzone mit dem Ziel, dass eine Standort-sensitive time-Objekt (und vor allem zu helfen, vorab die Qualität des durchschnittlichen Implementierungen mit Zeit-Objekte, die Folgen von diesem wiki) hier ist, was ich erzeugt in Python (bitte fühlen Sie sich frei zu Bearbeiten):
InformationsquelleAutor legel
Es gibt verschiedene Quellen online, die geojson-Daten für Zeitzonen (hier ist einer, hier anderen)
Verwendung einer geometrie-Bibliothek zum erstellen von polygon-Objekten aus der geojson-Koordinaten (formschöne [python], GEOS [c++], JTS [java], NTS [.net]).
Konvertieren Sie Ihre lat/lng, um ein point-Objekt (jedoch Ihre Bibliothek darstellt) und prüfen, ob es schneidet die Zeitzone polygon.
InformationsquelleAutor jtschoonhoven
durch die Verwendung von Längen-und Breitengrad, die Zeit die zone der aktuellen Lage unterhalb von code war für mich
InformationsquelleAutor user4042384
Versuchen, diesen code für Nutzung Google Time Zone-API von Java mit aktuellen NTP Time Client und korrigieren Sie UTC_Datetime_from_timestamp konvertieren:
Und verwenden Sie es mit:
InformationsquelleAutor Ingo
https://en.wikipedia.org/wiki/Great-circle_distance
Und hier ist eine gute Implementierung mit JSON-Daten:
https://github.com/agap/llttz
InformationsquelleAutor Tinien
Vom Guppy:
Gebundene Methode
America/Anchorage.dst
vonDstTzInfo
America/Anchorage' LMT-1 Tag, 14:00:00 STD
es gibt keine Bibliothek geocoders 🙁
InformationsquelleAutor Elchin Jafarov
Wenn Sie es vorziehen, zu vermeiden, ein web-service, können Sie abrufen, Informationen über den browser, wie dieser:
In meinem aktuellen Fall ist es Druck:
Datum: 27/01/2014 16:53:37
UTC-Offset: UTC-3
Land Code Zeitzone: BRT
Hoffe, dass es hilfreich sein kann.
InformationsquelleAutor Ito