gpt4 book ai didi

python - 日期范围和天真的日期时间抛出 Runtimewarning

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:24 28 4
gpt4 key购买 nike

给定今天的日期范围以过滤 Django 中的条目:

today_min = datetime.datetime.combine(timezone.now(), datetime.time.min)
today_max = datetime.datetime.combine(timezone.now(), datetime.time.max)
today_events = Entry.objects.filter(due_date_time__range=(today_min, today_max))

我显然使用 timezone.now() 而不是 datetime.date.today(),以考虑时区支持,但我仍然收到错误消息:

RuntimeWarning: DateTimeField received a naive datetime (2013-01-13 00:00:00) while time zone support is active.

RuntimeWarning: DateTimeField received a naive datetime (2013-01-13 23:59:59.999999) while time zone support is active.

我忽略了什么?谢谢

最佳答案

根据 Python 3.2 中 datetime 模块的来源,datetime.datetime.combine 的结果构造如下:

@classmethod
def combine(cls, date, time):
...

return cls(date.year, date.month, date.day,
time.hour, time.minute, time.second, time.microsecond,
time.tzinfo)

所以 tzinfo 在这里不被尊重,你使用 combine 函数的方式(如果 Python 2.X 版本的 datetime 像 3.2 版本那样做)。

要获取本地化的日期时间对象,Django docs推荐这个:

from django.utils import timezone
timezone.localtime(timezone.now())

关于python - 日期范围和天真的日期时间抛出 Runtimewarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307440/

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