【发布时间】:2016-09-02 07:08:00
【问题描述】:
我已经在设置中配置了我的时区,如 America/Guatemala 并且我的模型中有一些日期时间字段,我正在使用 default=timezone.now 但它没有保存我的本地时间,即 UTC-6:00,是将其保存为 UTC-00:00。我无法更改它,因为现在数据库中以这种方式存储了一些重要数据。
我在检索查询集中的数据时遇到问题,我在request.POST 中发送一个字符串,如下所示:
date='1/09/2016'
我已经尝试这个来配置我的查询日期:
f=date.split('/')
if len(f)>1:
initialdate=datetime.datetime(int(f[2]),int(f[1]),int(f[0]),0,0,0,tzinfo=pytz.UTC)
finaldate=datetime.datetime(int(f[2]),int(f[1]),int(f[0]),23,59,59,tzinfo=pytz.UTC)
这是我的查询集:
sale=Sale.objects.filter(Q(pk=int(cod))|Q(sale_date__range=(initialdate,finaldate)))
但由于我保存的数据与我的本地日期和时间之间存在 6 小时的差异,如果我在本地时间下午 6:01 存储销售,则保存的数据将存储为明天上午 00:01。如果我想查看今天的所有销售额,它不会显示下午 6 点之后的销售额,因为它们保存在不同的日期。
我有另一个查询,我发送两个不同的日期,我使用相同的代码,我只是将时间 0,0,0 添加到第一个日期,并将 23,59,59 添加到第二个日期,但我有同样的问题。
我的问题是,如何将这六个小时添加到我用作参数的日期中?我需要知道日期时间,而且我无法更改模型中的任何内容,我只能更改发送到查询集的参数。
【问题讨论】:
-
这不是您问题的直接答案,但在阅读这篇博文之前,我一直在与时区格式和数学作斗争。希望它对您也有帮助:(Pytz 和 Django 中的时区 | tommikaikkonen.github.io/timezones)