21

我有 2 个日期时间对象。一个只有日期,另一个有日期和时间。我只想比较日期(而不是时间)。这就是我所拥有的:

d2=datetime.date(d1.year,d1.month,d1.day)
print d2 == d1.date

它打印出错误的。知道为什么吗?

谢谢!

4

5 回答 5

45
d1.date() == d2.date()

来自 Python文档

datetime.date()返回具有相同年月日的日期对象。

于 2012-11-05T07:20:35.377 回答
5

首先将您的日期时间对象转换为日期对象。一旦它们属于同一类型,比较就会有意义。

if d2.date() == d1.date():
    print "same date" 
else:
    print "different date"

对于您的上述情况:-

In [29]: d2
Out[29]: datetime.date(2012, 1, 19)

In [30]: d1
Out[30]: datetime.datetime(2012, 1, 19, 0, 0)

所以,

In [31]: print d2 == d1.date()
True

您的案例所需要的只是确保您正在使用方括号执行 date 方法()

于 2012-11-05T07:21:34.100 回答
2

对于那些想要将特定日期与今天日期进行比较的人。

import datetime

# Set specific date
date = '2020-11-21'

# Cast specific date to Date Python Object
date = datetime.datetime.strptime(date, '%Y-%m-%d').date()

# Get today date with Date Python Object
today = datetime.date.today()

# Compare the date
isYesterday = date < today
isToday     = date == today
isTomorrow  = date > today
于 2020-11-21T07:12:39.260 回答
1
>>> datetime.date.today() == datetime.datetime.today().date()
True

欲了解更多信息

于 2012-11-05T07:20:46.953 回答
0

TL&DR:

DateTime 对象有一个名为 date() 的内置函数。您可以使用它来仅获取 datetime 对象的日期。

例子:

current_time_dt_object  = datetime.datetime.now()
current_time_only_date = current_time_dt_object.date()

您现在可以将此 current_time_only_date 用作您想要的任何相等操作。

于 2019-07-06T21:30:36.480 回答