zoukankan      html  css  js  c++  java
  • django中使用时间帅选报RuntimeWarning: DateTimeField Coupon.valid_begin_date received a naive datetime (2018-08-16 20:51:40.135425) while time zone support is active.

      今天在使用当前时间进行筛选数据时出现了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)

    即将秃头的程序员

  • 相关阅读:
    #Leetcode# 451. Sort Characters By Frequency
    #Leetcode# 148. Sort List
    PAT 甲级 1138 Postorder Traversal
    PAT 甲级 1141 PAT Ranking of Institutions
    PAT 甲级 1142 Maximal Clique
    PAT 甲级 1146 Topological Order
    PAT 甲级 1143 Lowest Common Ancestor
    #Leetcode# 347. Top K Frequent Elements
    牛客寒假算法基础集训营4
    PAT 1147 Heaps
  • 原文地址:https://www.cnblogs.com/Dream-huang/p/9489911.html
Copyright © 2011-2022 走看看