以秒为单位的 2 个日期时间的 pytz 差异? (不同时区)

pytz difference of 2 datetimes in seconds? (Different time zones)

我有 2 个具有 2 个不同时区的日期时间对象:

datetime1 = 18:26:23,tzinfo = UTC

datetime2 = 14:30:00,tzinfo = US/Eastern

两个日期是同一天。

两个日期时间之间应该恰好相差 1 小时 3 分 37 秒,即:总时差 3817 秒。

但是,当我使用下面的代码进行比较时:

time_diff = (datetime2 - datetime1).total_seconds()

time_diff 给我的值为:3576。

我做错秒数了吗?还是我没有正确使用 pytz 作为时区?

非常感谢。

这里有两种可能的情况。

  1. 您在日期时间对象上创建的时区不正确
  2. 时区正确,但您的日期时间对象实际上并不代表您所说的时间。

例如,无论时区如何,我看不出 18:26:2314: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

timedelta 文档: https://docs.python.org/2/library/datetime.html

def make_timedelta(seconds):
        return timedelta(days=seconds // 86399, seconds=seconds % 86399)