【发布时间】:2015-01-19 21:24:25
【问题描述】:
在python3.4中,如果我创建了一个时区感知的日期时间对象,我如何确定给定的日期是夏令时(dst)还是冬令时?
例子:
local_time = pytz.timezone('Europe/Berlin')
time_winter = datetime.datetime(2014, 11, 26, 10, tzinfo=local_time)
time_summer = datetime.datetime(2014, 7, 26, 10, tzinfo=local_time)
在这两种情况下 .dst() 都会返回:
>>> datetime.timedelta(0)
此外 .tzname() 和 .tzinfo() 总是相同的。
原则上,对象知道时区和夏令时,但只是有时:
cet_winter = pytz.timezone('CET') # CET is without dst
datetime.datetime(2014,7 , 26, 10, tzinfo=local_time).astimezone(cet_winter)
>>> datetime.datetime(2014, 7, 26, 11, 0, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>)
datetime.datetime(2014,11, 26, 10, tzinfo=local_time).astimezone(cet_winter)
>>> datetime.datetime(2014, 11, 26, 10, 0, tzinfo=<DstTzInfo 'CET' CET+1:00:00 STD>)
这里显示了夏季和冬季时间之间的差异...... 对UTC做同样的事情,它不会工作......
datetime.datetime(2014,11, 26, 10, tzinfo=local_time).astimezone(pytz.timezone('UTC'))
>>> datetime.datetime(2014, 11, 26, 9, 0, tzinfo=<UTC>)
datetime.datetime(2014,11, 26, 10, tzinfo=local_time).astimezone(pytz.timezone('UTC'))
>>> datetime.datetime(2014, 11, 26, 9, 0, tzinfo=<UTC>)
我是否从根本上错过了某些东西,还是需要使时区对象与时间相关?
【问题讨论】:
标签: datetime python-3.x