Wie bekomme ich eine lesbare zeitzonenname in Python?
In ein Python-Projekt an dem ich arbeite, möchte ich in der Lage, eine "human-readable" timezone Namen der form America/New_York, entsprechend dem system der lokalen Zeitzone für den Benutzer angezeigt. Jedes Stück code, den ich gesehen habe, das auf Zeitzonen Informationen gibt nur entweder einen numerischen offset (-0400) oder einem Buchstaben-code (EDT) oder manchmal auch beides. Gibt es eine Python-Bibliothek, die auf diese Informationen zugreifen können, oder wenn nicht, konvertieren Sie die offset - /Buchstaben-code in eine für den Menschen lesbare Namen?
Wenn es mehr als einen von Menschen lesbaren Namen entspricht einer bestimmten Zeitzone, eine Liste der möglichen Ergebnisse oder eine von Ihnen ist gut, und wenn es keine lesbare Bezeichnung entsprechend der aktuellen Zeitzone, nehme ich entweder eine Ausnahme oder None
oder []
oder was auch immer.
- Sie müssen vorsichtig sein mit, wie Sie dieses nutzen, denke ich. nur ein Beispiel: wenn in Europa/Rom wechselten wir von MESZ auf MEZ im Oktober 2010, die beide
2010-10-31T02:30:00CEST
und2010-10-31T02:30:00CET
aufgenommen wurden, ein äquivalent zu2010-10-31T00:30:00UTC
und die anderen zu2010-10-31T01:30:00UTC
.2010-10-31T02:30:00 Europe/Rome
wäre mehrdeutig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://pytz.sourceforge.net/ Hilfe sein können. Wenn nichts anderes, werden Sie möglicherweise in der Lage, schnappen Sie sich eine Liste mit allen Zeitzonen und dann Durchlaufen, bis Sie eine finden, die passt zu Ihrem offset.
shelve
- Datei oder speichern nur einedict
in einem Modul oder etwas eingegeben, werden durch den Buchstaben-code. Dann können Sie nur versenden diedict
mit der app und nicht die Suche ausführen, zweimal. Sie würde nicht einmal zu Schiffpytz
in diesem Fall: Sie können es einfach verwenden, in der Skript, baut diedict
tzlocal
Modul findenpytz
tzinfo Objekt, das entspricht der lokalen ZeitzoneDer folgende Code erzeugt eine defaultdict mapping Zeitzone offsets (z.B. '-0400") und Abkürzungen (z.B. 'MESZ') zu gemeinsamen geographischen Zeitzone Namen (z.B. 'America/New_York').
Beachten Sie, dass die Zeitzone Abkürzungen können sehr unterschiedliche Bedeutungen. Für Beispiel, 'EST' stehen könnte, für die Ost-Sommerzeit (UTC+10) Australia, oder Eastern Standard Time (UTC-5) in Nordamerika.
Auch offsets und Abkürzungen ändern kann, für die Regionen, dass die Nutzung von Tageslicht standard-Zeit. So speichern Sie die statische dict darf nicht stellen Sie die richtige Zeitzone name an 365 Tagen im Jahr.
Es ist
tzlocal
- Modul gibt einepytz
tzinfo-Objekt, das das system entspricht, die lokale Zeitzone:Antwort auf die Frage im Titel (für Menschen von google), könnten Sie
%Z%z
drucken Sie die lokale Zeitzone info:Er druckt die aktuelle Zeitzone Abkürzung und der utc-offset entsprechend Ihrer lokalen Zeitzone.
Möchten Sie nur wörtlich, was Sie gefragt haben, "die Zeitzone name des Formulars, America/New_York, entsprechend dem system der lokalen Zeitzone", und wenn Sie nur Interesse an Linux (und ähnlichen), dann sollte den job tun:
Natürlich wäre es schöner, wenn eine Bibliothek kapselt diese in eine sauberere Art und Weise, vielleicht Griffen die anderen Fälle, die Sie erwähnen, in den Kommentaren, wie bereits mit einem
tzinfo
Objekt. Ich denke, Sie können tun, dass mit pytz erwähnt von Amber, aber es ist mir nicht klar, wie...Check-out python-dateutil
tzinfo
Objekt, das nicht erhalten vondateutil.tz.gettz
- zum Beispiel eine vonpytz
- oder ob ich einfach anrufengettz()
(in dem Fall das mit dem Namen ist/etc/localtime
). (Weiterhin bin ich dankbar für die info)gettz
-- und Rekonstitution von Zeitzonen mit diesem argument undgettz
. Ich denke ich gehe davon aus, dass bestimmte Anwendungsfälle, zum Beispiel die Speicherung einer Zeit und die zugehörige Zeitzone string in einer Datenbank. Ich würde niegettz
von selbst, um die lokale Zeitzone, sondern auch in meinem Fall würde der Benutzer eine person, die hinter einem web-browser.