我运行代码来验证转换为datetime对象的时间戳是否等于我期望它们的日期时间对象,但是我得到了奇怪的结果。
import datetime
import pytz
local_tz=pytz.timezone('UTC')
time = datetime.datetime(2017, 10, 16, 17, 53, 54, tzinfo=local_tz)
converted_time_1 = datetime.datetime.utcfromtimestamp(int(time.strftime("%s"))).replace(tzinfo=pytz.utc).astimezone(local_tz)
converted_time_2 = datetime.datetime.utcfromtimestamp(int(time.strftime("%s"))).astimezone(local_tz)
converted_time_3 = datetime.datetime.utcfromtimestamp(int(time.strftime("%s")))
print('time:', time)
print('converted_time_1:', converted_time_1)
print('converted_time_2:', converted_time_2)
print('converted_time_3:', converted_time_3)
所有转换时间戳的输出都很奇怪:
time: 2017-10-16 17:53:54+00:00
converted_time_1: 2017-10-16 15:53:54+00:00
converted_time_2: 2017-10-16 12:53:54+00:00
converted_time_3: 2017-10-16 15:53:54
请告知我如何将datetime对象转换为时间戳并返回datetime对象,并确信我将收到相同的原始日期时间对象。
请注意,这与此问题Converting datetimes to timestamps and back again不同,其中问题与浮点精度有关。