如何比较python中的日期(而不是时间)

时间:2012-11-05 07:15:31

标签: python date datetime

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

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

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

谢谢!

5 个答案:

答案 0 :(得分:22)

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

来自Python doc

  

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

答案 1 :(得分:3)

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

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

您所需要的只是确保使用括号()执行日期方法。

答案 2 :(得分:1)

>>> datetime.date.today() == datetime.datetime.today().date()
True

For more info

答案 3 :(得分: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。

答案 4 :(得分:0)

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

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