zoukankan      html  css  js  c++  java
  • pytz

    • pytz

    django的模型类中使用的 DateTimeField 字段,自动添加下来的携带有时区信息,2019-06-19T03:58:11.937945Z
    在我的逻辑中需要对时间进行比较,我使用了datetime.datetime.today()取出的datetime对象默认是没有时区信息的,虽然两个都是datetime对象,但是在比较的时候就会报错
    #TypeError: can't compare offset-naive and offset-aware datetimes
    这是因为两个时间不属于同一类型,offset-naive是不含时区的类型,而offset-aware是有时区类型,两者自然不能比较。
    使用pytz解决,添加时区或者删除时区,一致的datetime对象就可以进行比较

    import datetime
    import pytz
    a = datetime.datetime.today()
    #datetime.datetime(2019, 6, 19, 12, 17, 5, 713381)
    b = datetime.datetime.today()-datetime.timedelta(days=3)
    #datetime.datetime(2019, 6, 16, 12, 18, 32, 654933)
    a > b 
    #True
    a == b
    #False
    #从django模型中取出的datetime对象
    #c = datetime.datetime(2019, 6, 19, 0, 0, tzinfo=<UTC>)
    #携带有tzinfo信息
    b == c
    #False
    b > c  报错
    #TypeError: can't compare offset-naive and offset-aware datetimes
    
    #对tzinfo信息进行删除
    c = c.replace(tzinfo=None)
    #datetime.datetime(2019, 6, 19, 0, 0)
    c > b
    #False  就可以进行比较了
    
    #对tzinfo进行添加
    a = a.replace(tzinfo=pytz.timezone('UTC'))
    #此时得到的a对象就可以和django模型中取出来的c对象直接进行比较了
    
  • 相关阅读:
    go入门4---数据
    hibernate之关联关系一对多
    hibernate的主键生成策略
    hibernate的入门
    struts--CRUD优化(图片上传)
    struts2--CRUD
    struts2--入
    Maven环境搭建
    EasyUI--增删改查
    easyui--权限管理
  • 原文地址:https://www.cnblogs.com/cizao/p/11484365.html
Copyright © 2011-2022 走看看