我有 2 个日期时间对象。一个只有日期,另一个有日期和时间。我只想比较日期(而不是时间)。这就是我所拥有的:
d2=datetime.date(d1.year,d1.month,d1.day)
print d2 == d1.date
它打印出错误的。知道为什么吗?
谢谢!
首先将您的日期时间对象转换为日期对象。一旦它们属于同一类型,比较就会有意义。
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 方法()
。
对于那些想要将特定日期与今天日期进行比较的人。
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
>>> datetime.date.today() == datetime.datetime.today().date()
True
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 用作您想要的任何相等操作。