gpt4 book ai didi

python - pytz 本地化与日期时间替换

转载 作者:IT老高 更新时间:2023-10-28 21:33:29 28 4
gpt4 key购买 nike

我在使用 pytz 的 .localize() 函数时遇到了一些奇怪的问题。有时它不会对本地化的日期时间进行调整:

.localize 行为:

>>> tz
<DstTzInfo 'Africa/Abidjan' LMT-1 day, 23:44:00 STD>
>>> d
datetime.datetime(2009, 9, 2, 14, 45, 42, 91421)

>>> tz.localize(d)
datetime.datetime(2009, 9, 2, 14, 45, 42, 91421,
tzinfo=<DstTzInfo 'Africa/Abidjan' GMT0:00:00 STD>)
>>> tz.normalize(tz.localize(d))
datetime.datetime(2009, 9, 2, 14, 45, 42, 91421,
tzinfo=<DstTzInfo 'Africa/Abidjan' GMT0:00:00 STD>)

如您所见,本地化/规范化操作并未改变时间。但是,如果使用 .replace:

>>> d.replace(tzinfo=tz)
datetime.datetime(2009, 9, 2, 14, 45, 42, 91421,
tzinfo=<DstTzInfo 'Africa/Abidjan' LMT-1 day, 23:44:00 STD>)
>>> tz.normalize(d.replace(tzinfo=tz))
datetime.datetime(2009, 9, 2, 15, 1, 42, 91421,
tzinfo=<DstTzInfo 'Africa/Abidjan' GMT0:00:00 STD>)

这似乎对日期时间进行了调整。

问题是 - 哪个是正确的,为什么其他人是错的?

最佳答案

localize 只是假设您传递给它的天真日期时间是“正确的”(除了不知道时区!),因此只设置时区,没有其他调整。

您可以(并且建议...)在 UTC 内部工作(而不是使用简单的日期时间)并在需要以本地化方式执行日期时间的 I/O 时使用 replace(normalize 将处理 DST 等)。

关于python - pytz 本地化与日期时间替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1379740/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com