TypeError: can't subtract offset-naive and offset-aware datet

在使用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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章