长话短说;博士;
如何将 2016-01-01
转换为 Django timezone
?
完整版:
我从表单收到一个查询字符串参数,我想获取该字符串并将其用作 Django 中的日期时间过滤器。问题是,当我将字符串转换为日期时间时,它并没有意识到日期时间,因此由于时区不同,我损失了几个小时。也许我在格式化中迷失了自己,但我做不到。
我有 pytz,我的设置中也有 USE_TZ = True
。
例子:
from datetime import date
# Example from what I receive as GET querystring parameter
start_date, end_date = '15-01-2016', '16-01-2016'
DATE_FORMAT = '%Y-%m-%d'
start_date = start_date.split('-')
start_date = date(int(start_date[2]), int(start_date[1]), int(start_date[0]))
sd_filter = start_date.strftime(DATE_FORMAT)
end_date = end_date.split('-')
end_date = date(int(end_date[2]), int(end_date[1]), int(end_date[0]))
ed_filter = end_date.strftime(DATE_FORMAT)
#query
my_list = MyModel.objects.filter(created_at__range=(sd_filter, ed_filter))
问题出在过滤器上。由于 Django 设置的时区,我损失了几个小时。
更新: 我不需要将 datetime.now()
转换为我的时间。我需要将字符串转换为日期时间。
原文由 jarussi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我知道这是旧的,但也许会有所帮助,因为我也遇到了这种情况:
使用 make_aware() 怎么样?
这将使用当前活动的时区(由
timezone.activate
激活)。如果没有明确激活时区,它将使用默认时区 --TIME_ZONE
在settings.py
--- 中指定。