【发布时间】:2022-01-03 02:43:50
【问题描述】:
我在 python 中遇到了一个奇怪的时区问题,我将其归结为几行代码:
from datetime import time, datetime
import pytz
tz = pytz.timezone('Canada/Pacific')
d = datetime.now(tz=tz)
t = time(tzinfo=tz)
当检查 d 和 t 中的 tzinfo 对象时,t 中的对象给出了一个 utc-offset 为 8:12 的时区,而 d 中的一个给出了一个 utc-offset 8 小时,这是正确的偏移量。 tz 实例还给出了 8:12 的 UTC 偏移量。额外的 12 分钟有什么用?
我意识到datetime.now() 取决于您运行代码的时间,所以我会说我在将其发布到 StackOverflow 之前运行了几分钟并看到了同样的错误。有更多了解时区的人可以帮我找出问题所在吗?
【问题讨论】:
-
另外,我目前在 PST 时区,住在加拿大温哥华。
-
datetime.time的文档说“一个理想化的时间,独立于任何特定的一天,假设每天正好有 24*60*60 秒。(这里没有“闰秒”的概念.)" 也许这很相关?另外,您能否显示minimal reproducible example,其中包括您如何看待时间偏移错误? -
我认为这不是正确的方法。如果您看到 pytz 文档,它们会列出不同的用法。
-
@RandomDavis MRE 在问题文本中:``` from datetime import time, datetime import pytz tz = pytz.timezone('Canada/Pacific') d = datetime.now(tz=tz ) t = time(tzinfo=tz) print(d.tzinfo._utcoffset) print(t.tzinfo._utcoffset) ```为了清楚起见,只是添加了打印语句
-
如上所述,用法不正确。
标签: python datetime timezone timezone-offset pytz