How to Compare Dates Only (And Not the Time) in Python
I Have 2 Datetime Objects. One Only Has the Date and the Other One Has Date & Time. I Want to Compare the Dates Only (And Not the Time). This Is What I Have...
I have 2 datetime objects. One only has the date and the other one has date & time. I want to compare the dates only (and not the time). This is what I have:
d2=datetime.date(d1.year,d1.month,d1.day)
print d2 == d1.date
It prints out false. Any idea why?
Thank you!
5 Answers
d1.date() == d2.date()
From the Python doc:
datetime.date()Return date object with same year, month and day.
Cast your datetime object into a date object first. Once they are of the same type, the comparison will make sense.
if d2.date() == d1.date():
print "same date"
else:
print "different date"
For your case above:-
In [29]: d2
Out[29]: datetime.date(2012, 1, 19)
In [30]: d1
Out[30]: datetime.datetime(2012, 1, 19, 0, 0)
So,
In [31]: print d2 == d1.date()
True
All you needed for your case was to make sure you are executing the date method with the brackets ().
For those who wants to compare specific date with today 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:
The DateTime Object has a built in function called date(). You can use this to get the date only of the datetime object.
Example:
current_time_dt_object = datetime.datetime.now()
current_time_only_date = current_time_dt_object.date()
You can now use this current_time_only_date as do any equality operation you want.