How can I compare a date and a datetime in Python?

python compare datetime strings
datetime python
python datetime compare date only
python convert string to datetime
python compare timestamps
python datetime now
python compare date to today
python datetime milliseconds

Here's a little snippet that I'm trying execute:

>>> from datetime import *
>>> item_date = datetime.strptime('7/16/10', "%m/%d/%y")
>>> from_date = date.today()-timedelta(days=3)
>>> print type(item_date)
<type 'datetime.datetime'>
>>> print type(from_date)
<type 'datetime.date'>
>>> if item_date > from_date:
...     print 'item is newer'
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't compare datetime.datetime to datetime.date

I can't seem to compare the date and the datetime values. What would be the best way to compare these? Should I convert the datetime to date or vice-versa? How do i convert between them.

(A small question but it seems to be a little confusing.)

Use the .date() method to convert a datetime to a date:

if item_date.date() > from_date:

Alternatively, you could use datetime.today() instead of date.today(). You could use

from_date = from_date.replace(hour=0, minute=0, second=0, microsecond=0)

to eliminate the time part afterwards.

How can I compare a date and a datetime in Python?, Simple Python program to compare dates. # importing datetime module. import datetime. # date in yyyy/mm/dd format. d1 = datetime.datetime( 2018 , 5 , 3 ). Comparing dates and times is a very crucial requirement in any programming language. Python has a datetime library which has many inbuilt functions to use date and time. Interestingly date and time can also be compared like mathematical comparison between various numbers. Example

I am trying to compare date which are in string format like '20110930'

benchMark = datetime.datetime.strptime('20110701', "%Y%m%d") 

actualDate = datetime.datetime.strptime('20110930', "%Y%m%d")

if actualDate.date() < benchMark.date():
    print True

Comparing dates in Python, Comparing dates and times is a very crucial requirement in any programming language. Python has a datetime library which has many inbuilt� Return a datetime with the same attributes, except for those attributes given new values by whichever keyword arguments are specified. Note that tzinfo=None can be specified to create a naive datetime from an aware datetime with no conversion of date and time data.

Here is another take, "stolen" from a comment at can't compare datetime.datetime to datetime.date ... convert the date to a datetime using this construct:

datetime.datetime(d.year, d.month, d.day)

Suggestion:

from datetime import datetime

def ensure_datetime(d):
    """
    Takes a date or a datetime as input, outputs a datetime
    """
    if isinstance(d, datetime):
        return d
    return datetime.datetime(d.year, d.month, d.day)

def datetime_cmp(d1, d2):
    """
    Compares two timestamps.  Tolerates dates.
    """
    return cmp(ensure_datetime(d1), ensure_datetime(d2))

Comparing dates in Python, The datetime module supplies classes for manipulating dates and times in to the default scheme of comparing object addresses, date comparison normally� Comparing dates is quite easy in Python. Dates can be easily compared using comparison operators (like , >, =, >=, != etc.). Let’s see how to compare dates with the help of datetime module using Python. Code #1 : Basic

In my case, I get two objects in and I don't know if it's date or timedate objects. Converting to date won't be good as I'd be dropping information - two timedate objects with the same date should be sorted correctly. I'm OK with the dates being sorted before the datetime with same date.

I think I will use strftime before comparing:

>>> foo=datetime.date(2015,1,10)
>>> bar=datetime.datetime(2015,2,11,15,00)
>>> foo.strftime('%F%H%M%S') > bar.strftime('%F%H%M%S')
False
>>> foo.strftime('%F%H%M%S') < bar.strftime('%F%H%M%S')
True

Not elegant, but should work out. I think it would be better if Python wouldn't raise the error, I see no reasons why a datetime shouldn't be comparable with a date. This behaviour is consistent in python2 and python3.

8.1. datetime — Basic date and time types — Python 3.4.10 , The date/time you wish to parse; The mask of what you are parsing. Calling the strptime function. We start by importing datetime:. A date in Python is not a data type of its own, but we can import a module named datetime to work with dates as date objects. Example Import the datetime module and display the current date:

Create and similar object for comparison works too ex:

from datetime import datetime, date

now = datetime.now()
today = date.today()

# compare now with today
two_month_earlier = date(now.year, now.month - 2, now.day)
if two_month_earlier > today:
    print(True)

two_month_earlier = datetime(now.year, now.month - 2, now.day)
if two_month_earlier > now:
   print("this will work with datetime too")

Date time objects in Python, Python datetime classes and learn how to handle time and date objects in Python , How do we compare date and time objects in Python? I see that date comparisons can be done and there's also datetime.timedelta(), but I'm struggling to find out how to check if the current time (datetime.datetime.now()) is earlier, later or the same than a specified time (e.g. 8am) regardless of the date.

How to Work with Python Date and Time , Comparing dates (or datetime objects) in Python is very easy. The basic comparison operators (==, !=, <>, >, <, >=, <=) are overloaded for the� For calculating days in two dates difference, can be done like below: import datetime import math issuedate = datetime(2019,5,9) #calculate the issue datetime current_date = datetime.datetime.now() #calculate the current datetime diff_date = current_date - issuedate #//calculate the date difference with time also amount = fine #you want change if diff_date.total_seconds() > 0.0: #its matching

Python date comparison, newdate2 = time.strptime(date2, "%d/%m/%Y"). Now for converting them into python's date format. You need to do the comparison: newdate1 >� 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.

How to compare two dates?, Using dateutil to Add Time Zones to Python datetime; Comparing Naive and datetime.date is an idealized date that assumes the Gregorian� Let's say I have a string: "10/12/13" and "10/15/13", how can I convert them into date objects so that I can compare the dates? For example to see which date is before or after. python date datetime

Comments
  • This seems to be a duplicate of stackoverflow.com/questions/7239315/…
  • I think this is the best answer if it's given that item_date will always be a datetime and from_date will always be a date. I landed here because I wanted to sort a list containing both date and datetime. In my case, the approach above is probably the worst.
  • why is the conversion necessary? I thought that internally python uses a unixtimestamp for date and datetime. Or is date more resource optimized in that it only looks for date and not time?
  • If you have string format YYYYMMDD string comparison is equivalent to converting to date and comparing dates and is more efficient.