2012-10-19 21 views
7

我試圖美化的ObjectID時間戳和py-pretty,但它一直給我一個類型錯誤:蒙戈對象ID:「無法比擬的偏移天真和偏移感知日期時間」,即使pytz

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

即使我試圖用Pytz將時間戳轉換爲不知道UTC時間的時區。這是我想要的代碼

import datetime 
import pytz 
import pretty 
# ... 

song = db.songs.find_one({ 'GUID' :}) 
dateTimeUnaware = song['_id'].generation_time.now(pytz.utc) 
prettyDate = pretty.date(dateTimeUnaware) 

爲什麼這會一直給我類型錯誤? Pytz函數不應該使它時區不可知?

+0

你有什麼有一個時區感知日期時間是不是不可知的......讓pytz.utc給它一個utc的時區。刪除那應該解決您的問題'dateTimeUnaware = song ['_ id']。generation_time.now()' – Pykler

回答

18

我不是一個py-pretty高手,但是你的代碼不會將時區感知的日期轉換成時區未知的日期。

它只需在utc時區中使用當前日期(使用now)(因此可識別時區)。

可以TZ感知日期時間天真地轉換爲TZ-不知道一個使用:

your_datetime_var.replace(tzinfo=None) 

你的情況:

song['_id'].generation_time.replace(tzinfo=None) 

注意,「天真」,在這種情況下,意味着所有領域與日期和時間相關的值與原始值相同,但有關時區和DST的信息將丟失。

順便說一句,它看起來像PY-漂亮是沒有維護(上次上傳於2010年的PyPI,源代碼無法訪問),所以它可能是一個好主意,尋找替代

相關問題