【发布时间】:2020-07-14 16:44:13
【问题描述】:
当我运行这段代码时:
#!/usr/bin/env python3
from datetime import datetime, timedelta
from dateutil import tz
from pytz import timezone
time = "2020-01-15 10:14:00"
time = datetime.strptime(time, "%Y-%m-%d %H:%M:%S")
print("time1 = " + str(time))
time = time.replace(tzinfo=timezone('America/New_York'))
print("time2 = " + str(time))
time = time.astimezone(tz.gettz('UTC')) # explicity convert to UTC time
print("time3 = " + str(time))
time = datetime.strftime(time, "%Y-%m-%d %H:%M:%S") # output format
print("done time4 = " + str(time))
我得到这个输出:
time1 = 2020-01-15 10:14:00
time2 = 2020-01-15 10:14:00-04:56
time3 = 2020-01-15 15:10:00+00:00
done time4 = 2020-01-15 15:10:00
我原以为最后的时间是“2020-01-15 15:14:00”,有人知道为什么它会延迟 4 分钟吗?我不明白为什么 time2 中的偏移量会是“-04:56”而不是“-05:00”
【问题讨论】:
-
2021:由于我们现在使用 Python 3.9 已经有一段时间了,因此请使用 zoneinfo 避免 pytz 的“本地化陷阱”,参见例如stackoverflow.com/a/63628816/10197418
标签: python datetime timezone utc