请使用以下内容:
from datetime import timezone
utc_datetime = local_datetime.astimezone().astimezone(timezone.utc).replace(tzinfo=None)
假设有一个日期时间对象是假定为本地日期时间,你可以使用以下一系列方法调用将其转换为表示相同 UTC 时间的原始 UTC 日期时间(已在 Python 3.6.3 中测试)。
- astimezone() 添加本地时区,使其不再是原始状态。
- astimezone(timezone.utc) 将其从本地转换为UTC。
- replace(tzinfo=None) 移除时区,使其再次为原始状态,但现在是UTC
示例:
>>> local_datetime = datetime.now()
>>> local_datetime
datetime.datetime(2019, 12, 14, 10, 30, 37, 91818)
>>> local_datetime.astimezone()
datetime.datetime(2019, 12, 14, 10, 30, 37, 91818, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400), 'Eastern Standard Time'))
>>> local_datetime.astimezone().astimezone(timezone.utc)
datetime.datetime(2019, 12, 14, 15, 30, 37, 91818, tzinfo=datetime.timezone.utc)
>>> local_datetime.astimezone().astimezone(timezone.utc).replace(tzinfo=None)
datetime.datetime(2019, 12, 14, 15, 30, 37, 91818)
注意:第一个astimezone()实际上是不需要的,因为Python文档中有这样的说明:
在版本3.6中更改:现在可以在假定表示系统本地时间的无时区实例上调用astimezone()方法。