В формате времени ISO 8601 не хранится имя часового пояса, сохраняется только соответствующее смещение UTC.
Чтобы преобразовать файл ctime в строку времени ISO 8601 с сохранением смещения UTC в 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'
Код предполагает, что ваш местный часовой пояс равен Восточный часовой пояс (ET) и что ваша система предоставляет правильное смещение UTC для данной временной метки POSIX (ts
), т. Е. Python имеет доступ к База данных исторического часового пояса в вашей системе или часовой пояс имели те же правила на указанную дату.
Если вам нужно портативное решение; использовать pytz
модуль , который обеспечивает доступ к базе данных tz :
>>> 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'
Результат в этом случае тот же.
Если вам нужно название / аббревиатура / идентификатор часового пояса, сохраните его отдельно.
>>> dt.astimezone().strftime('%Y-%m-%d %H:%M:%S%z (%Z)')
'2015-11-27 00:29:06-0500 (EST)'
Примечание: нет, :
в смещении UTC и EST
сокращение часового пояса не является частью формата времени ISO 8601. Это не уникальный.
Разные библиотеки / разные версии одной и той же библиотеки могут использовать разные правила часового пояса для одной и той же даты / часового пояса. Если это будущая дата, то правила могут быть еще неизвестны. Другими словами, одно и то же время UTC может соответствовать разному местному времени, в зависимости от того, какие правила вы используете - сохранение времени в формате ISO 8601 сохраняет время UTC и местное время, которое соответствует часовому поясу current правила, используемые на вашей платформе. Возможно, вам придется пересчитать местное время на другой платформе, если у нее другие правила.