gpt4 book ai didi

python - pytz 时区在夏令时期间有错误的偏移量

转载 作者:行者123 更新时间:2023-12-05 05:04:34 29 4
gpt4 key购买 nike

<分区>

我对 pytz 和夏令时有疑问。当我使用时区 Europe/Berlin 时,它始终使用不带 DST 的时区偏移量。

最小的例子:

print(repr(pytz.timezone("Europe/Berlin")))
<DstTzInfo 'Europe/Berlin' CET+1:00:00 STD>
# Should probably be something like <DstTzInfo 'Europe/Berlin' CET+2:00:00 DST>

# Usage
from django.utils import timezone
from datetime import datetime
datetime_now = timezone.now()
print(my_time)
# Result: 00:00:00
print(datetime.combine(datetime_now, my_time, tzinfo=timezone.get_current_timezone()))
# Result: 2020-04-04 00:00:00+01:00, should be 2020-04-04 00:00:00+02:00

我用例的最小示例是闹钟。用户将时钟设置为 06:00(不考虑时区),时钟应在当前时区的 06:00 响起,即 06: 00+02 当它是 DST 和 06:00+01 否则 Europe/Berlin


实现是一个使用 django.models.TimeField 的 Django 模型,用于非感知时间(例如 06:00),我想将它与当前的进行比较time 和其他 TimeFields,方法是创建一个 datetime 对象,该对象在 TimeField 中存储当前日期和时间。

我愿意接受关于时间对象的不同建议(例如使用或不使用 django.utils.timezone),只要我可以创建可以相互比较并递增/递减的日期时间对象使用 timedelta 对象(或一些类似的方法)。


另一个最小的例子(Django 仅用于获取当前时区):

from django.utils import timezone
import datetime

tz = timezone.get_current_timezone()
time_now = datetime.datetime.now(tz=tz)
clock_time = datetime.time(1,2)
combined_time = datetime.combine(time_now, clock_time, tzinfo=tz)
print(tz)
print(time)
print(time_now)
print(combined_time)

结果

Europe/Berlin
01:02:00
2020-04-12 18:50:11.934754+02:00
2020-04-12 01:02:00+01:00

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