0

我正在尝试使用以下内容记录某一天的所有记录:

entered_at = request.session['entered_at']
entered_at = datetime.strptime(entered_at, "%m-%d-%Y")
day_start = entered_at.replace(hour=00, minute=00)
day_end = entered_at.replace(hour=23, minute=59)

entries = Entry.objects.filter(
                                                  customer=customer, 
                                                  entered_at__lt=day_end, 
                                                  entered_at__gte=day_start
                                                  )

当我这样做时,我在控制台中收到以下警告:

在时区支持处于活动状态时,DateTimeField 收到了一个简单的日期时间。

我知道我可以添加类似的内容:,day_start = entered_at.replace(hour=00, minute=00, tzinfo=<UTC>)

但是,如果我使用 UTC,这不会使从午夜到晚上 11:59 的范围相对于用户时区。

我如何表达相对于用户时区的一整天?

4

1 回答 1

0

我相信你想要这样的东西,使用 pytz 库。请参阅如何在 python 中使不知道的日期时间时区感知

import pytz

entered_at = request.session['entered_at']
entered_at = datetime.strptime(entered_at, "%m-%d-%Y")
day_start = entered_at.replace(hour=00, minute=00)
day_end = entered_at.replace(hour=23, minute=59)

timezone = pytz.timezone("America/Los_Angeles")
day_start = timezone.localize(day_start)
day_end = timezone.localize(day_end)

entries = Entry.objects.filter(customer=customer, 
                               entered_at__lt=day_end, 
                               entered_at__gte=day_start)
于 2014-08-25T23:50:29.417 回答