django中使用时间帅选报RuntimeWarning: DateTimeField Coupon.valid_begin_date received a naive datetime (2018-

Posted dream-huang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django中使用时间帅选报RuntimeWarning: DateTimeField Coupon.valid_begin_date received a naive datetime (2018-相关的知识,希望对你有一定的参考价值。

  今天在使用当前时间进行筛选数据时出现了RuntimeWarning: DateTimeField Coupon.valid_begin_date received a naive datetime (2018-08-16 20:51:40.135425) while time zone support is active.警告,虽然不影响程序运行,但是还是想弄明白。

 

原因

   Django如果开启了Time Zone功能,则所有的存储和内部处理,甚至包括直接print显示全都是UTC的。只有通过模板进行表单输入/渲染输出的时候,才会执行UTC本地时间的转换。所以我建议后台处理时间的时候,最好完全使用UTC,不要考虑本地时间的存在。而显示时间的时候,也避免手动转换,尽量使用Django模板系统代劳。

警告代码

import datetime
            now = datetime.datetime.now()

 

 

解决办法

第一种:修改settings中的配置项

  • 找到settings中的USE_TZ= True,把True改成False即可

 

第二种:如果USE_TZ= True,则需这样获取当前时间

  • 存储到数据库中的是UTC时间

  • 在函数直接传递时间参数时,确保时间已经转换成UTC时间

 

import datetime
            from django.utils.timezone import utc
            now = datetime.datetime.utcnow().replace(tzinfo=utc)

 

以上是关于django中使用时间帅选报RuntimeWarning: DateTimeField Coupon.valid_begin_date received a naive datetime (2018-的主要内容,如果未能解决你的问题,请参考以下文章

2.1 如何在列表,字典,集合中根据条件帅选数据

利用rqalpha帅选股票 1

[需求管理-5]:需求分析 - 如何进行有潜在商业价值需求的帅选?用户故事的定义方法?

sql server 按值得优先级做帅选数据的条件?

Java中数组的使用(第二篇)

Totime iOS购物APP