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

时间:2015-05-21 17:35:23

标签: python datetime pytz

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

datetime1 = 18:26:23,tzinfo = UTC

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

两个日期都在同一天。

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

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

{{1}}

time_diff给我的值为:3576。

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

这里有两种可能的情况。

  1. 要么错误地在日期时间对象上创建时区
  2. 时区是正确的,但您的日期时间对象实际上并不代表您说的时间。
  3. 例如,无论时区如何,我都不知道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
    

答案 1 :(得分:-1)

doc for timedelta: https://docs.python.org/2/library/datetime.html

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