zoukankan      html  css  js  c++  java
  • Datetime中offset-naive与offset-aware时间的计算

    在使用Django时,默认是开启对多时区的支持的,在获取时间的时候会是如下形式:

    datetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=<UTC>)

    我们可以利用django.utils.timezone中提供的localtime方法来将该时间转换为本地时间:

    1
    2
    3
    4
    >>> dt
    datetime.datetime(201441815377, tzinfo=<UTC>)
    >>> localtime(dt)
    datetime.datetime(201441823377, tzinfo=<LocalTimezone>)

    有时候,我们需要将该时间与当前时间做比较,例如计算差值,你可能会想到直接这么做:

    1
    2
    3
    >>> import datetime
    >>> now = datetime.datetime.now()
    >>> now - dt

    不过这是不对的,并告知如下错误:

    1
    2
    3
    Traceback (most recent call last):
      File "<console>", line 1in <module>
    TypeError: can't subtract offset-naive and offset-aware datetimes

    问题就出在利用datetime.datetime.now()得到的当前时间是offset-naive的,而另外一个却是offset-aware的,因此我们需要将这里的dt转成与now一样的形式,可以这么做:

    1
    2
    3
    4
    5
    >>> dt = dt.replace(tzinfo=None)
    >>> dt
    datetime.datetime(201441815377)
    >>> now - dt
    datetime.timedelta(034108443000)
  • 相关阅读:
    CSS input
    CSS 伪类选择器
    input placeholder 文字颜色修改
    css flex弹性布局学习总结
    jqGrid使用方法
    GridView控件RowDataBound事件的一个实例
    GridView控件RowDataBound事件中获取列字段值的几种途径 !!!
    .net中ckeditor的应用
    博客第一天
    用python实现数学多元数学方程式计算
  • 原文地址:https://www.cnblogs.com/zzblee/p/4270939.html
Copyright © 2011-2022 走看看