标签:
在使用Django时,默认是开启对多时区的支持的,在获取时间的时候会是如下形式:
datetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=<UTC>)
我们可以利用django.utils.timezone中提供的localtime方法来将该时间转换为本地时间:
1
2
3
4
|
>>> dt datetime.datetime( 2014 , 4 , 18 , 15 , 37 , 7 , tzinfo = <UTC>) >>> localtime(dt) datetime.datetime( 2014 , 4 , 18 , 23 , 37 , 7 , tzinfo = <LocalTimezone>) |
有时候,我们需要将该时间与当前时间做比较,例如计算差值,你可能会想到直接这么做:
1
2
3
|
>>> import datetime >>> now = datetime.datetime.now() >>> now - dt |
不过这是不对的,并告知如下错误:
1
2
3
|
Traceback (most recent call last): File "<console>" , line 1 , in <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( 2014 , 4 , 18 , 15 , 37 , 7 ) >>> now - dt datetime.timedelta( 0 , 34108 , 443000 ) |
Datetime中offset-naive与offset-aware时间的计算
标签:
原文地址:http://www.cnblogs.com/zzblee/p/4270939.html