2015-05-21 54 views
-1

我有2个不同的时区2个datetime对象:pytz在2秒内的日期时间差? (不同的时区)

datetime1 = 18时26分23秒,与tzinfo = UTC

DATETIME2 = 14点30分零零秒,与tzinfo = US /东部

这两个日期是在同一天。

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

然而,当我使用下面的代码进行比较:

time_diff = (datetime2 - datetime1).total_seconds() 

time_diff给我的一个值:3576.

我做的不对秒之差?还是我没有正确使用pytz的时区?

非常感谢。

+0

你可以p以一个简短但完整的程序的形式来完成这个任务吗? –

+0

这些日期的日期是怎样的,你是如何灌输时区的?从没有日期的'US/Eastern'开始,您可以获得该时区的_original_版本(格林威治标准时间19:04:00,而不是一个小时),而不是_current_版本。如果您随后将日期打包到已知错误偏移时间中,则会保留错误的偏移量。 – abarnert

回答

1

这里有两种可能的情况。

  1. 要么你创建你的日期时间的时区对象不正确
  2. 的时区是正确的,但你的datetime对象实际上并不代表你说他们的时间。

例如,无论时区,我看不出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 
+0

这并不能回答他的问题,因为他的问题几乎可以肯定是他创建的日期时间对象错了,只是显示完全不同的代码工作并没有多大帮助。 – abarnert

+0

而且我可以轻而易举地提供一个例子,说明_doesn't_工作。尝试使用与DST时间线2002-07-27相同的东西,或者在EST改变为1890-10-27之前的时间。 – abarnert

+0

好点,我怀疑时区不是问题,他的'日期时间'对象不代表他认为它的时间。 –

相关问题