Python 中的 ISO 时间(ISO 8601)

新手上路,请多包涵

我有一个文件。在 Python 中,我想获取它的创建时间,并将其转换为 ISO 时间 (ISO 8601) 字符串 ,同时保留它是在 Eastern Time Zone (ET) 中创建的事实

如何获取文件的 ctime 并将其转换为指示东部时区的 ISO 时间字符串(并在必要时考虑夏令时)?

原文由 Joseph Turian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 504
1 个回答

本地 ISO 8601:

 import datetime
datetime.datetime.now().isoformat()
>>> 2020-03-20T14:28:23.382748

UTC 到 ISO 8601:

 import datetime
datetime.datetime.utcnow().isoformat()
>>> 2020-03-20T01:30:08.180856

本地到 ISO 8601 没有微秒:

 import datetime
datetime.datetime.now().replace(microsecond=0).isoformat()
>>> 2020-03-20T14:30:43

带有时区信息的 UTC 到 ISO 8601(Python 3):

 import datetime
datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat()
>>> 2020-03-20T01:31:12.467113+00:00

UTC 到 ISO 8601,带有没有微秒的本地时区信息(Python 3):

 import datetime
datetime.datetime.now().astimezone().replace(microsecond=0).isoformat()
>>> 2020-03-20T14:31:43+13:00

具有时区信息的 ISO 8601 本地(Python 3):

 import datetime
datetime.datetime.now().astimezone().isoformat()
>>> 2020-03-20T14:32:16.458361+13:00

请注意,在 utc 时间使用 astimezone() 时存在错误。这给出了不正确的结果:

 datetime.datetime.utcnow().astimezone().isoformat() #Incorrect result

对于 Python 2,请参阅并使用 pytz

原文由 estani 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题