如何在django中获取相对于时区的一天的记录

时间:2014-08-25 15:59:58

标签: python django datetime django-timezone

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

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的范围。

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

1 个答案:

答案 0 :(得分:0)

我相信你想要这样的东西,使用pytz库。见How to make an unaware datetime timezone aware in 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)