【发布时间】:2018-10-30 18:59:27
【问题描述】:
示例代码
from datetime import datetime, timezone, timedelta
import pytz
t11 = datetime(1918, 4, 15, 0, 0, tzinfo=timezone.utc).astimezone(pytz.timezone('Europe/Berlin'))
t12 = t11 + timedelta(hours=1)
t2 = datetime(1918, 4, 15, 1, 0, tzinfo=timezone.utc).astimezone(pytz.timezone('Europe/Berlin'))
print(t12)
print(t2)
观察到
1918-04-15 02:00:00+01:00
1918-04-15 03:00:00+02:00
预期
我希望两者都是我看到的t2。关键的区别是t2.hour 与t12.hour。对于时区感知的日期时间对象,我希望小时是本地时间。
问题
如何改变这种行为?这是什么原因造成的?
【问题讨论】:
-
再一次,这不是关于图书馆,而是关于德国时间;那是时钟改变的时候:timeanddate.com/time/change/germany?year=1918。如果您没有在冬季/夏季时间之间移动,您会看到不同的行为。
-
当然。这正是我选择这次的原因。
-
那你为什么不在问题中提及呢?为什么是 1918 年;今年的变化不会发生吗?你读过例如stackoverflow.com/a/46185504/3001761?
-
@jonrsharpe 我想很明显我没有意外选择 DST 开始的时间。(1918 年,因为我正在试验时区的旧变化。最初,我想看看 pytz知道相当古老的变化。见Wikipedia article。
标签: python python-3.x datetime timedelta pytz