相关疑难解决方法(0)

为什么pytz localize()不会生成一个日期时间对象,其tzinfo与本地化的tz对象匹配?

有谁能帮我理解这里发生了什么?

import pytz
from datetime import datetime
tz = pytz.timezone('Europe/Berlin')
print repr(tz)
# <DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>
dt = datetime(2011, 1, 3, 18, 40)
result = tz.localize(dt)
print repr(result.tzinfo)
# <DstTzInfo 'Europe/Berlin' CET+1:00:00 STD>
assert result.tzinfo == tz, "Why aren't these the same timezone?"
Run Code Online (Sandbox Code Playgroud)

我的理解是localize()pytz时区对象上的方法将采用一个天真的日期时间对象,并添加一个tzinfo匹配执行本地化的时区对象的属性.在这种情况下似乎没有发生这种情况.

显然,我对时区或者pytz处理时区的方式有些误解.谁能解释一下?

python timezone datetime pytz tzinfo

11
推荐指数
1
解决办法
2477
查看次数

datetime.combine() 和 pytz.localize() 的区别

我对以下行为感到有些困惑。假设我datetime.combine()用来构造一个时区感知对象:

>>> date
datetime.date(2018, 10, 17)
>>> time
datetime.time(6, 0)
>>> tz
<DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>
>>> datetime.combine(date, time, tzinfo=tz)
datetime.datetime(2018, 10, 17, 6, 0, tzinfo=<DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>)
Run Code Online (Sandbox Code Playgroud)

或者我pytz.localize()以前也这样做:

>>> tz.localize(datetime.combine(date, time))
datetime.datetime(2018, 10, 17, 6, 0, tzinfo=<DstTzInfo 'Europe/Berlin' CEST+2:00:00 DST>)
Run Code Online (Sandbox Code Playgroud)

请注意tzinfo的时区名称和偏移量是如何变化的。我无法找到该行为的适当文档。该pytz文件说,

不幸的是,对于许多时区,使用标准日期时间构造函数的 tzinfo 参数“不适用于”pytz。

那么这里到底发生了什么?(有些相关的问题在这里这里。)

python timezone datetime

5
推荐指数
1
解决办法
851
查看次数

标签 统计

datetime ×2

python ×2

timezone ×2

pytz ×1

tzinfo ×1