Mar*_*oma 7 python timezone datetime pytz python-3.x
from datetime import datetime, timezone
import pytz
tzstring = 'Europe/Berlin'
t1 = datetime(2016, 6, 16, 2, 0, tzinfo=pytz.timezone(tzstring))
t2 = datetime(2016, 6, 16, 2, 0, tzinfo=timezone.utc).astimezone(pytz.timezone(tzstring))
Run Code Online (Sandbox Code Playgroud)
print(t1): 2016-06-16 02:00:00+00:53
print(t2): 2016-06-16 04:00:00+02:00
Run Code Online (Sandbox Code Playgroud)
print(t1): 2016-06-16 04:00:00+02:00 # does not match expectation
print(t2): 2016-06-16 04:00:00+02:00 # matches expectation
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下吗?
我不想说我可以这样解释它,但它被记录为不起作用。从pytz 主页:
该库仅支持两种构建本地化时间的方法。第一种是使用
localize()
pytz库提供的方法。这用于本地化原始日期时间(没有时区信息的日期时间)(例子)
构建本地时间的第二种方法是使用标准
astimezone()
方法转换现有的本地时间。(例子)
不幸的是,对于许多时区,使用标准日期时间构造函数的 tzinfo 参数对 pytz 来说“不起作用”。
Run Code Online (Sandbox Code Playgroud)>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt) '2002-10-27 12:00:00 LMT+0020'
对于没有夏令时转换的时区来说是安全的,例如 UTC
我怀疑 pytz 中时区的表示与日期时间构造函数使用的不兼容。
我认为,与其追求确切的细节,不如接受它不起作用并使用建议的替代方案更为实际。
归档时间: |
|
查看次数: |
3399 次 |
最近记录: |