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对象直接进行比较了
    
  • 相关阅读:
    November 13th 2016 Week 47th Sunday The 1st Day
    November 12th 2016 Week 46th Saturday
    November 11th 2016 Week 46th Friday
    November 10th 2016 Week 46th Thursday
    November 9th 2016 Week 46th Wednesday
    November 8th 2016 Week 46th Tuesday
    windows 7文件共享方法
    Win7无线网络共享设置方法
    常量指针和指针常量
    如何查找局域网的外网ip
  • 原文地址:https://www.cnblogs.com/cizao/p/11484365.html
Copyright © 2011-2022 走看看