• python datetime offset-aware与offset-navie相互转换


    python datetime offset-aware与offset-navie相互转换

    有时,我们使用python 的datetime模块比较两个时间的前后关系时,会出现报错:

    TypeError: can't compare offset-naive and offset-aware datetimes

    这是因为两个时间不属于同一类型,offset-naive是不含时区的类型,而offset-aware是有时区类型,两者自然不能比较。

    我们可以通过判断datetime对象的tzinfo属性,来获悉他是何种类型

    1.  
      In [17]: import datetime
    2.  
       
    3.  
      In [18]: import pytz
    4.  
       
    5.  
      In [19]: now=datetime.datetime.now()
    6.  
       
    7.  
      In [20]: now
    8.  
      Out[20]: datetime.datetime(2016, 11, 13, 16, 23, 37, 488000)
    9.  
       
    10.  
      In [21]: now.tzinfo==None
    11.  
      Out[21]: True
    12.  
       

    上述代码中now就是一个offset-naive型,就是一个不含时区的datetime。下面代码可以把它转换为一个含时区的offset-aware型:

    1.  
      In [22]: now=now.replace(tzinfo=pytz.timezone('UTC'))
    2.  
       
    3.  
      In [23]: now
    4.  
      Out[23]: datetime.datetime(2016, 11, 13, 16, 23, 37, 488000, tzinfo=<UTC>)
    5.  
       
    6.  
      In [24]: now.tzinfo
    7.  
      Out[24]: <UTC>

    同样的,将一个offset-aware型转换为offset-naive型:
    1.  
      In [25]: now=now.replace(tzinfo=None)
    2.  
       
    3.  
      In [26]: now
    4.  
      Out[26]: datetime.datetime(2016, 11, 13, 16, 23, 37, 488000)
  • 相关阅读:
    javascript 对象只读
    异步IO
    模板
    Web框架
    WSGI接口
    web开发发展历程
    python函数中的参数类型
    学习网址
    python inspect模块
    详解python的装饰器decorator
  • 原文地址:https://www.cnblogs.com/leigepython/p/9360283.html
Copyright © 2020-2023  润新知