Frage

Gibt es eine Möglichkeit die Offset von GMT abzuschätzen (oder Zeitzone) von einer Breite / Länge? Ich habe geonames gesehen, aber dies müßte langfristig arbeiten und wir wollen nicht wirklich auf einem Web-Service verlassen. Es würde nur verwendet werden, um zu bestimmen, ob „heute“ angezeigt oder „heute Abend“, wenn Informationen zu verschiedenen Benutzern zu geben, damit es nicht zu genau sein muß (eine Stunde oder zwei weg wäre nicht schlecht).

War es hilfreich?

Lösung

offset = direction * longitude * 24 / 360

Dabei steht Richtung 1 für Ost, -1 für Westen und Länge ist in (-180.180)

Andere Tipps

Basieren der Zeitzone auf der Länge allein ist wild ungenau außerhalb von internationalen Gewässern. Sehen Sie die Karte auf dieser Seite:

http://askgeo.com/database/TimeZone

Die vertikalen farbigen Streifen im tiefen Ozean sind die sogenannten natürlichen Zeitzonen von Länge abgeleitet allein, und die Farben des Landes werden die tatsächlichen Zeitzonen gemäß den geltenden Gesetzen. Sie können sehen, dass sie in einer Reihe aufstellen nicht sehr gut aus.

Ich lief tatsächlich in dieses Problem, während auf einem anderen Projekt arbeiten und haben erhebliche Forschung und Entwicklung darauf. Zunächst meine Forschung:

  • Zunächst Zeitzonen typischerweise nicht nur um einen Offset von GMT (aka UTC) codiert. Das verkennt die Sommerzeit, und Veränderungen in den Zeitzonen im Laufe der Jahre in Anspruch nehmen. Stattdessen werden die IDs Zeitzone verwendet, um einen geographischen Bereich zu bezeichnen, in dem die offizielle Istzeit das gleiches im gesamten Bereich für eine gegebene Zeitperiode gewesen ist (beispielsweise seit 1970). Das wichtigste System solchen IDs ist die „Olson Zeitzonen-ID“ (gemeinsam diese IDs und deren sind als die „tz-Datenbank“ bekannt Offset-Regeln), die von Linux und anderen Unix-Betriebssystemen verwendet wird. Die meisten Programmiersprachen und Betriebssysteme haben native oder Dritte Unterstützung für Olson Zeitzone IDs.

Im Hinblick auf die bestehenden Lösungen geografische Breite und Länge der Zeitzone zu konvertieren:

  • GeoNames.org hat eine große Datenbank von Punktorte (Zentren der Städte, Flughäfen, öffentliche Gebäude, etc.), von denen jede mit einer Reihe von nützlichen Metadaten annotiert wird, einschließlich der Olson Zeitzone ID. Und sie haben eine schöne API Sie diese über das Web zugreifen zu lassen. Das Problem ist, dass, wenn es sei denn, der Punkt, den Sie abfragen werden, ist rechts oben auf einen Datensatz in ihrer Datenbank, könnten Sie ein Ergebnis bekommen, die auf der anderen Seite von einer Zeitzone Grenze ist, oder Sie können keine Antwort auf alle, ob Ihre Anfrage erhalten weit von ihrem nächsten Punkt. Der Web-Service ist auch sehr langsam, und sie begrenzen die Anzahl der Abfragen, die Sie an einem Tag auf eine relativ kleine Zahl machen.

  • Earth Werkzeuge (http://www.earthtools.org/webservices.htm) hat auch einen Service für das, und es ist viel schneller als GeoNames, aber es gibt nur eine Offset von GMT, keine Zeit Zonen-ID, und es behandelt nicht die Sommerzeit richtig für die meisten der Welt. Auch scheint es nicht aufrecht erhalten werden, so dass ich bin mir nicht sicher, ob die Daten korrekt ist mehr (Zeitzonen im Laufe der Zeit ändern).

Nachdem diese Optionen zu überprüfen und nach anderen Möglichkeiten ohne Erfolg suchte, habe ich beschlossen, meine eigene Lösung zu bauen, und freigegeben es an:

http://askgeo.com

AskGeo auf einer Zeitzonenkarte der Welt basiert, so dass es gibt eine gültige Zeitzone für jede gültige Breite und Länge. Es gibt die Standard Olson Zeitzonen-ID (zum Beispiel „America / Los_Angeles“) verwendet, auf Linux und die meisten anderen Betriebssysteme und Programmierumgebungen. Es gibt auch den aktuellen Offset, in vollem Umfang Rechnung Sommerzeit nehmen.

Es ist extrem einfach zu bedienen und die Nutzung auf der Hauptseite der Website dokumentiert. Die API unterstützt Batch-Abfragen, wenn Sie also eine Menge-Lookups zu benötigen, rufen Sie die Batch-Schnittstelle anstatt bog unsere Server mit Serienanforderungen verwenden. Die Massenabfragen sind auch viel schneller, so gewinnt jeder.

Als wir diese ins Leben gerufen, bauten wir es auf Google App Engine (GAE) und machte es für alle Benutzer kostenlos. Dies war möglich, weil GAE Preise zu dieser Zeit so niedrig waren. Seitdem hat sich unsere Serverbelastung deutlich erhöht und die Preise der GAE ging Weg nach oben. Beide Faktoren zusammen führten uns zu Amazon Web Services wechseln für das Hosting und zu starten für die kommerzielle Nutzung des Ladevorgangs, während der Dienst kostenlos für gemeinnützige halten, nicht-kommerzielle Open-Source-Projekte, und Forscher. Für gewerbliche Nutzer bieten wir1000 freie Abfragen potenzielle Kunden bewerten die API, um sicherzustellen, es erfüllt ihre Bedürfnisse zu lassen. Siehe die Website für die Preise und Bedingungen.

Die zugrunde liegende Bibliothek wurde in Java geschrieben und wegen der großen Nachfrage, veröffentlichten wir auch die Bibliothek unter einer kommerziellen Lizenz. Die vollständige Dokumentation der Bibliothek und Preisinformationen sind auf der Website.

Ich hoffe, das nützlich ist. Es war sicherlich nützlich für das Projekt, das ich gerade arbeite.

Wenn Sie die Benutzer Länge kennen, wissen Sie vollständig alle Aspekte der Zeit, dass sie (einige kleine Fehler wie die spezielle Relativitätstheorie etc zu vernachlässigen). Die mittlere Sonnenzeit ist einfach der Unterschied von GMT und Länge (konvertieren Grade Teil Minuten, 1 Grad = 60 Minuten). Sie fügen oder auf Basis von Ost oder West subtrahieren. Mittlere Sonnenzeit ist im Grunde eine genauere Zeit dann Zeitzonen. Tageszeit und Nachtzeit Zeiten sind variabel und hängen von den geographischen Breite, so verwenden Sie einige Annäherungen von Sonnenaufgang und Sonnenuntergang in der Breite zu nehmen und das Datum und Jahr. Das allein wäre ziemlich genaue Vorstellung von Tageszeit bieten und Nacht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top