Cómo comparar dos fechas?


¿Cómo compararía dos fechas para ver cuál es más tarde, usando Python?

Por ejemplo, quiero verificar si la fecha actual es más allá de la última fecha en esta lista que estoy creando, de fechas de vacaciones, para que envíe un correo electrónico automáticamente, diciéndole al administrador que actualice las vacaciones.archivo txt.

 258
Author: Andrew Alexander, 2011-11-15

3 answers

Utilice el método datetime y el operador < y su pariente.

>>> from datetime import datetime
>>> past = datetime.now()
>>> present = datetime.now()
>>> past < present
True
>>> datetime(3000, 1, 1) < present
False
>>> present - datetime(2000, 4, 4)
datetime.timedelta(4242, 75703, 762105)
 336
Author: Fred Foo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-31 19:03:51

Use time

Digamos que usted tiene las fechas iniciales como cadenas como estas:
date1 = "31/12/2015"
date2 = "01/01/2016"

Puede hacer lo siguiente:
newdate1 = time.strptime(date1, "%d/%m/%Y") y newdate2 = time.strptime(date2, "%d/%m/%Y") para convertirlos al formato de fecha de Python. Entonces, la comparación es obvia:

newdate1 > newdate2 volverá False
newdate1 < newdate2 volverá True

 48
Author: Guillermo Pereira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-22 14:07:28

datetime.date(2011, 1, 1) < datetime.date(2011, 1, 2) volverá True.

datetime.date(2011, 1, 1) - datetime.date(2011, 1, 2) volverá datetime.timedelta(-1).

datetime.date(2011, 1, 1) + datetime.date(2011, 1, 2) volverá datetime.timedelta(1).

Véase el docs.

 33
Author: Daniel Nill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-15 20:09:27