Формат времени 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 и местное время, которое соответствует текущему времени. правила зоны, используемые на вашей платформе. Возможно, вам придется пересчитать местное время на другой платформе, если для нее действуют другие правила.
person
jfs
schedule
28.11.2015