Operaciones aritméticas de fechas con Python

Python, como lenguaje de programación se dice que es muy potente, sin embargo, si no se rompen los paradigmas para usarlo, podemos estar un tanto perdidos. El lenguaje tiene ciertas clases o librerías que manipulan formatos de fecha y tiempo, la básica es datetime.

No conozco mucho el lenguaje, soy aprendiz, pero acá hice un pequeño ejemplo de cómo podría sumar o restar unos formatos de fechas, el ejemplo que expongo es una resta de la fecha actual con una fecha que se introduce y el resultado final sea en cantidad de años.

Por defecto el formato de fecha actual que python presenta es YYYY/mm/dd, para corroborar, podemos usar la shell de python, desde Bash es simplemente hacer:

python
>>> from datetime import datetime
>>> print datetime.now().date()
2014-08-23

La clase se puede usar solo print datetime.now(), pero ésta arrojará un formato de tipo fecha y tiempo, es por eso que al final se agrega el método .date(), para que muestre la fecha.

En el ejemplo que hice, el formato de la fecha introducida es dd/mm/yyyy, es decir, día/mes/año, el año con 4 dígitos. Entonces, debo hacer un cambio de formato previo antes de realizar la operación, el script quedó de la siguiente manera:

#!/usr/bin/env python

from datetime import datetime, date, timedelta

# Fecha ingresada
fecha_ingresada = '09/04/2008'

# Separo el formato de fecha para convertirlo en yyyy/mm/dd
d = fecha_ingresada.split('/')
fecha_a_calcular = datetime.strptime(d[2] + d[1] + d[0],'%Y%m%d').date()

# Creo una variable con la operación aritmética
calcdate = datetime.now().date() - fecha_a_calcular

# Imprimo el resultado final
print calcdate.days / 365

El cálculo de la operación aritmética, genera un valor de tipo timedelta, que muestra un formato con: días, segundos, microsegundos, milisegundos, minutos, horas, semanas; es por eso que al final de la impresión del resultado se usa print calcdate.days, para que muestre sólo los días, luego esos días se dividen entre 365 para que convierta en años el resultado.

Advertisements

About felixurbina

Humano con todos los defectos y virtudes que vienen de fábrica.
This entry was posted in Python. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s