关于python: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

两个日期都在同一天。

2个日期时间之间应该有1小时3分37秒的差异,即:3817秒的总差异。

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

1
time_diff = (datetime2 - datetime1).total_seconds()

time_diff给了我一个值:3576。

我在几秒钟内做错了吗? 或者我没有正确使用时区的pytz?

非常感谢。


这里有两种可能的情况。

  • 您要么错误地在日期时间对象上创建时区
  • 时区是正确的,但您的日期时间对象实际上并不代表您说的时间。
  • 例如,无论时区如何,我都看不到18:26:2314:30:00之间的差异如何可能给你一个偶数秒,这使得场景#2更有可能。

    您可以在运行该行之前打印datetime对象的值:

    1
    time_diff = (datetime2 - datetime1).total_seconds()

    以下是一些示例代码供您参考,它可以为您提供预期的秒数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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

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