我今天在纽约创建了一个10:30的日期:
ny_tz = timezone('America/New_York')
ny_time = datetime(2014, 9, 4, 10, 30, 2, 294757, tzinfo=ny_tz)
打印:
2014-09-04 10:30:02.294757-04:56
我试图将此与另一个纽约时间进行比较,该时间偏移时间为4:00,因此比较不起作用。
如何使时区偏移4:00?
答案 0 :(得分:10)
你应该这样做:
ny_tz = timezone('America/New_York')
ny_time = ny_tz.localize(datetime(2014, 9, 4, 10, 30, 2, 294757))
这会给你正确的结果:
>>> print ny_tz.localize(datetime(2014, 9, 4, 10, 30, 2, 294757))
2014-09-04 10:30:02.294757-04:00
相关的pytz
文档部分:http://pytz.sourceforge.net/#localized-times-and-date-arithmetic
在您的情况下会发生什么情况是时区被盲目地附加到日期时间对象,而不知道它的年,月等等。因为日期未知,并且无法确定当前立法的时间,应该DST生效等等,假设您只想要获得纽约的地理时间。
结果可能因年份而异。例如,1918年美国引入了夏令时,因此1917年和1918年同一天的结果有所不同:
>>> print ny_tz.localize(datetime(1917, 9, 4, 10, 30, 2, 294757))
1917-09-04 10:30:02.294757-05:00
>>> print ny_tz.localize(datetime(1918, 9, 4, 10, 30, 2, 294757))
1918-09-04 10:30:02.294757-04:00