我有以下錯誤,請問有人可以解釋datetime.datetime和datetime.date之間的區別嗎?Python的日期時間操作
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'datetime.date'
我有以下錯誤,請問有人可以解釋datetime.datetime和datetime.date之間的區別嗎?Python的日期時間操作
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'datetime.date'
顧名思義,一個datetime
包括有關在日期和時間信息,而date
只是一個日期。這就是爲什麼減去兩個日期時間是允許的並且返回timedelta
(兩個時刻之間的時間差),但是減去datetime
和date
不是 - 因爲date
是指一整天,所以不清楚你想要的那一天的哪一部分計算到的距離。
要修正錯誤,您必須指定您指向的日期中的哪個點。例如,要使其指向日期開始的午夜,請將dt - d
替換爲dt - datetime.datetime(d.year, d.month, d.day)
。
date
只是日期(年,月,日),而datetime
還包括時間(年,月,日,時,分,秒,毫秒)。
您不能直接比較兩者,因爲您需要明確指定如何處理時間部分。你完全忽略了時間部分,還是選擇了一些隨意的時間與必要時(通常是午夜)進行比較?這種選擇取決於哪種方法最適合您的情況,而且只有您可以確定。
更具體地說,您必須將date
升至datetime
,或將datetime
降級爲date
。假定日期時間爲dt
,日期爲d
,後者更容易一些(通常更有意義 - 您可以撥打dt.date()
),但前者也不難(datetime.datetime(d.year, d.month, d.day)
)。
在您的代碼中,它將看起來像dt.date() - d
或dt - datetime.datetime(d.year, d.month, d.day)
。
注意,這將返回一個datetime.timedelta
對象,這是另一個略有不同的動物 - 它不代表特定的時間點,只是兩點之間的差異(即,您不能將其用作日期日期)。
這是哪一種語言? – 2013-04-08 17:58:31
對不起編輯,python,我從文檔中獲得了兩個ojects的定義,但仍然在努力理解diff,這只是秒?我怎麼能轉換其中一個具有相同的格式? – matel 2013-04-08 18:00:40
輸入'help(datetime.datetime)'和'help(datetime.date)' – jurgenreza 2013-04-08 18:04:44