Comparación de fechas en Python con datatime
Cuando se tienen dos objetos datetime
, la fecha y la hora que representa uno de ellos puede ser anterior o posterior a la del otro, o bien igual.
Para comparar objetos datetime, puedes utilizar operadores de comparación como mayor que, menor que o igual que. Como cualquier otra operación de comparación, se devuelve un valor booleano.
En este tutorial, aprenderemos a comparar la fecha y la hora en objetos datetime.
Comprobar si un DateTime es mayor que otra DateTime
Puedes utilizar el operador mayor que >
para comprobar si un objeto datetime es mayor que otro.
Primero entendamos qué queremos decir cuando una fecha y hora es mayor que otra. Por ejemplo, si tomas la fecha y hora actuales y alguna fecha y hora pasadas para compararlas, la fecha y hora actuales son mayores que las pasadas. Del mismo modo, la fecha y la hora futuras son mayores que la fecha y la hora actuales. La misma explicación es válida para dos fechas cualesquiera.
Cronológicamente, la que ocurrió primero es menor.
En el siguiente programa, inicializamos dos objetos datetime
, y luego comparamos si el primero es mayor que el segundo.
import datetime
# fecha y hora en formato aaaa/mm/dd hh:mm:ss
d1 = datetime.datetime(2020, 5, 13, 22, 50, 55)
d2 = datetime.datetime(2020, 7, 13, 22, 50, 55)
d3 = datetime.datetime(2020, 6, 13, 22, 50, 55)
print(d1 > d2)
print(d2 > d3)
Salida:
False
True
Hemos inicializado tres objetos datetime. Todos los valores para el año, día, hora, minuto y segundo son los mismos, pero cambiamos el valor del mes. d1
tiene el mes igual a 5, d2
tiene el mes igual a 7 y d3
tiene el mes igual a 6.
Comprobar si un DateTime es menor que otro DateTime
Puedes utilizar el operador de comparación menor que <
para comprobar si un objeto datetime
es menor que otro.
En el siguiente programa, inicializamos dos objetos datetime, y luego comparamos si el primero es menor que el segundo.
import datetime
# fecha y hora en formato aaaa/mm/dd hh:mm:ss
d1 = datetime.datetime(2020, 5, 13, 22, 50, 55)
d2 = datetime.datetime(2020, 7, 13, 22, 50, 55)
d3 = datetime.datetime(2020, 6, 13, 22, 50, 55)
print(d1 < d2)
print(d2 < d3)
Salida:
True
False
Comprobar si dos objetos DateTime son iguales
Puedes utilizar el operador de comparación igual que =
para comprobar si un objeto datetime
tiene el mismo valor que el otro.
En el siguiente programa, inicializamos dos objetos datetime, y luego comprobamos si ambos objetos datetime tienen la misma fecha y hora.
import datetime
# fecha y hora en formato aaaa/mm/dd hh:mm:ss
d1 = datetime.datetime(2020, 5, 13, 22, 50, 55)
d2 = datetime.datetime(2020, 5, 13, 22, 50, 55)
d3 = datetime.datetime(2020, 6, 13, 22, 50, 55)
print(d1 == d2)
print(d2 == d3)
Salida:
True
False
Comparar sólo las fechas de los objetos DateTime
En el siguiente programa, inicializamos tres objetos datetime, y comparamos sólo las fechas e ignoramos la parte del tiempo.
import datetime
# fecha y hora en formato aaaa/mm/dd hh:mm:ss
d1 = datetime.datetime(2020, 5, 13, 22, 50, 55)
d2 = datetime.datetime(2020, 5, 13, 7, 50, 55)
d3 = datetime.datetime(2020, 6, 13, 22, 50, 55)
print(d1.date() == d2.date()) #True
print(d1.date() == d3.date()) #False
print(d1.date() < d2.date()) #False
print(d1.date() < d3.date()) #True
print(d1.date() > d2.date()) #False
print(d1.date() > d3.date()) #False
Salida:
True
False
False
True
False
False
Comparar sólo las horas de los objetos DateTime
En el siguiente programa, inicializamos tres objetos datetime, y comparamos sólo las horas e ignoramos la parte de la fecha.
import datetime
# fecha y hora en formato aaaa/mm/dd hh:mm:ss
d1 = datetime.datetime(2020, 5, 13, 22, 50, 55)
d2 = datetime.datetime(2020, 5, 13, 7, 50, 55)
d3 = datetime.datetime(2020, 6, 13, 22, 50, 55)
print(d1.time() == d2.time()) #True
print(d1.time() == d3.time()) #False
print(d1.time() < d2.time()) #False
print(d1.time() < d3.time()) #True
print(d1.time() > d2.time()) #False
print(d1.time() > d3.time()) #False
Salida:
False
True
False
False
True
False
Resumiendo este tutorial de Python, hemos aprendido a comparar dos objetos DateTime
, a comparar fechas de objetos DateTime y a comparar horas de objetos DateTime. Del mismo modo, puedes comparar objetos DateTime a un nivel más granular como, si uno tiene mayor mes, o menor día, o mayor hora temprana y tal, accediendo al valor correspondiente del objeto datetime.