在Python中,朴素的DateTime指的是local time,而不是UTC.所以呢,
utc_time = datetime.strptime(utc, '%Y-%m-%dT%H:%M:%S')
具有误导性;utc_time
将被解释为当地时间.在你打电话的那一刻就出了问题
utc_dn = utc_time.timestamp()
timestamp
方法将日期时间转换为UTC,然后计算Unix时间(指UTC).
100
docs:个
朴素对象不包含足够的信息,无法相对于其他日期/时间对象明确定位自己.
您的应用程序正是需要这一点.因此,请使用Aware DateTime以避免歧义.例如:
from datetime import datetime, timezone
#input
utc='2023-09-20T05:04:54'
#calculation
utc_time = datetime.strptime(utc, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc)
utc_dn = utc_time.timestamp()
utc_back = datetime.fromtimestamp(utc_dn, tz=timezone.utc)
utc_str_back = utc_back.strftime('%Y-%m-%d %H:%M:%S %Z')
#output
print(utc_str_back)
# 2023-09-20 05:04:54 UTC
附注:pytz is deprecated.