Dro*_*ror 5 python datetime pytz
假设我有一个无时区的datetime对象:
import datetime
import pytz
fmt = "%Y-%m-%d %H:%M:%S %Z%z"
dtUnaware = datetime.datetime(1979,2,20,6)
print(dtUnaware.strftime(fmt))
Run Code Online (Sandbox Code Playgroud)
这会产生:
1979-02-20 06:00:00
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在,我想为此对象分配一个时区.好像我可以使用datetime.replace或者pytz.localize.
第一:
dtAware1 = dtUnaware.replace(tzinfo=pytz.timezone('Asia/Jerusalem'))
print(dtAware1.strftime(fmt))
Run Code Online (Sandbox Code Playgroud)
回报:1979-02-20 06:00:00 LMT+0221.其次:
dtAware2 = pytz.timezone('Asia/Jerusalem').localize(dtUnaware, is_dst=None)
print(dtAware2.strftime(fmt))
Run Code Online (Sandbox Code Playgroud)
回报1979-02-20 06:00:00 IST+0200.
第一种方法有什么问题?它似乎分配了一个错误的时区.难道我做错了什么?
来自 Pytz 文档:该库与用于 tzinfo 实现的已记录的 Python API 不同;如果您想创建本地挂钟时间,您需要使用localize()本文档中记录的方法...不幸的是,如果不修改 Python 日期时间实现,这些问题就无法解决(请参阅 PEP-431)
我对此的解读是,pytz时区与标准时区并不完全相同。如果您有真正的时区,第一种方法应该很好,但您没有。
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |