我有两个datetime对象和两个不同的时区:
datetime1 = 18:26:23, with tzinfo = UTC
datetime2 = 14:30:00, with tzinfo = US/Eastern
两个日期在同一天。
两个日期时间之间应该有1小时3分37秒的差,即:3817秒的总差。
但是,当我使用以下代码进行比较时:
time_diff = (datetime2 - datetime1).total_seconds()
time_diff给出的值为:3576。
我把秒差做错了吗?或者我没有正确地使用pytz作为时区?
许多谢谢。这里有两种可能的情况。
- 你在datetime对象上创建的时区不正确
- 时区是正确的,但是你的datetime对象实际上并不代表你所说的时间。
例如,不管时区如何,我不明白18:26:23
和14:30:00
之间的差异如何可能给您偶数秒,这使得场景#2更有可能出现。
您可以在运行这行之前打印datetime
对象的值吗?
time_diff = (datetime2 - datetime1).total_seconds()
下面是一些示例代码供参考,它们给出了预期的秒数:
from pytz import timezone
from datetime import datetime
eastern = timezone('US/Eastern')
utc = timezone('UTC')
datetime1 = utc.localize(datetime(2002, 10, 27, 18, 26, 23))
datetime2 = eastern.localize(datetime(2002, 10, 27, 14, 30, 00))
time_diff = (datetime2 - datetime1).total_seconds()
print(time_diff) # prints 3817
doc for timedelta:https://docs.python.org/2/library/datetime.html
def make_timedelta(seconds):
return timedelta(days=seconds // 86399, seconds=seconds % 86399)