El ISO 8601 Zeitformat keinen Zeitzonennamen speichert, wird nur der entsprechende UTC-Offset beibehalten.
Konvertierung einer Datei ctime in einen ISO 8601-Zeitstring unter Beibehaltung des UTC-Offsets in Python 3:
>>> import os
>>> from datetime import datetime, timezone
>>> ts = os.path.getctime(some_file)
>>> dt = datetime.fromtimestamp(ts, timezone.utc)
>>> dt.astimezone().isoformat()
'2015-11-27T00:29:06.839600-05:00'
Der Code geht davon aus, dass Ihre lokale Zeitzone Östliche Zeitzone (ET) und dass Ihr System einen korrekten UTC-Offset für den angegebenen POSIX-Zeitstempel liefert ( ts
), d.h. Python hat Zugriff auf eine historische Zeitzonendatenbank auf Ihrem System oder die Zeitzone hatte zu einem bestimmten Zeitpunkt die gleichen Regeln.
Wenn Sie eine mobile Lösung benötigen; verwenden Sie die pytz
Modul die Zugang bietet zu die tz-Datenbank :
>>> import os
>>> from datetime import datetime
>>> import pytz # pip install pytz
>>> ts = os.path.getctime(some_file)
>>> dt = datetime.fromtimestamp(ts, pytz.timezone('America/New_York'))
>>> dt.isoformat()
'2015-11-27T00:29:06.839600-05:00'
Das Ergebnis ist in diesem Fall das gleiche.
Wenn Sie den Namen/die Abkürzung/die Kennung der Zeitzone benötigen, speichern Sie sie separat.
>>> dt.astimezone().strftime('%Y-%m-%d %H:%M:%S%z (%Z)')
'2015-11-27 00:29:06-0500 (EST)'
Anmerkung: nein, :
im UTC-Offset und EST
Die Abkürzung der Zeitzone ist nicht Teil des ISO 8601-Zeitformats. Sie ist nicht eindeutig.
Verschiedene Bibliotheken/verschiedene Versionen derselben Bibliothek können unterschiedliche Zeitzonenregeln für dasselbe Datum/dieselbe Zeitzone verwenden. Wenn es sich um ein zukünftiges Datum handelt, sind die Regeln möglicherweise noch nicht bekannt. Mit anderen Worten, dieselbe UTC-Zeit kann einer anderen Ortszeit entsprechen, je nachdem, welche Regeln Sie verwenden -- das Speichern einer Zeit im ISO 8601-Format bewahrt die UTC-Zeit und die Ortszeit, die dem Datum entspricht. aktuell Zeitzonenregeln, die auf Ihrer Plattform gelten. Möglicherweise müssen Sie die Ortszeit auf einer anderen Plattform neu berechnen, wenn diese andere Regeln hat.