无法比较datetime.datetime和datetime.date

113 投票
8 回答
170599 浏览
提问于 2025-04-17 00:38

我有以下代码,但出现了上面的错误。因为我刚接触Python,所以对这里的语法有点困惑,不太明白怎么才能修复这个错误:

if not start or date < start: start = date

8 个回答

14

假设start是一个日期时间,使用方法如下:

if not start or date < start.date(): start = date

觉得在Python中没有必要把日期转换成日期时间,因为你可以直接反过来做,进行比较。

或者你也可以用其他方法,通过日期转换并把时间设置为00:00来创建一个新的日期时间。

21

你可以使用 datetime.datetime.combine 这个方法,把日期对象和时间对象结合起来,然后再把这个组合后的对象和另一个时间对象进行比较。

import datetime

dt1 = datetime.datetime(2011, 03, 03, 11, 12)
day = datetime.date(2011, 03, 02)
dt2 = datetime.datetime.combine(day, datetime.time(0, 0))

print dt1 > dt2
149

有一个叫做 datetime.date() 的方法,可以把日期时间转换成只有日期的格式。

如果你想把日期转换回日期时间,可以用这个函数 datetime.datetime(d.year, d.month, d.day)

撰写回答