Trabajar con fechas¶
Hasta ahora hemos trabajado con diferentes tipos de datos:
- Números enteros, sin decimales, que son objetos de la clase
int - Números con decimales, que son objetos de la clase
float - Cadenas de texto, que son objetos de la clase
str - Valores booleanos, True y False, que son objetos de la clase
bool - Listas que son objetos de la clase
list - Tuplas que son objetos de la clase
tuple - Diccionarios que son objetos de la clase
dict
Todos estos tipos son built-in, es decir, definidos por el lenguaje. Pero
la biblioteca de Python incluye módulos que definen otro tipos de datos. Uno
de ellos es el módulo datetime, que proporciona mecanismos para trabajar
con fechas, horas, minutos y segundos.
Objetos datetime¶
El tipo de dato datetime almacena momentos. Un momento es, por ejemplo:
día 12 de junio de 2025 a las 12:34
O bien, si solo queremos la fecha:
día 12 de junio de 2025 a las 00:00
Una fecha se crea así:
| Fecha.py | |
|---|---|
1 2 3 4 | |
Lo que muestra:
2025-06-12 00:00:00
<class 'datetime.datetime'>
Vemos que el módulo datetime define un tipo de igual nombre, datetime. Por
ese motivo, importamos el tipo, no el módulo:
from datetime import datetime
Podemos crear un objeto de cualquier tipo (incluidos los tipos built in) invocando una función constructora del mismo nombre que el tipo:
x = float(0)
texto = str(0)
hoy = datetime(2025, 6, 12)
La función datetime() permite especificar horas, minutos y segundos, que son parámetros opcionales (el valor por defecto es cero)
from datetime import datetime
hoy = datetime(2025, 6, 12, 11, 35, 0)
print(hoy)
Lo que muestra:
2025-06-12 11:35:00
Obtener el momento actual¶
El métodon now() asociado al tipo datetime devuelve la fecha y hora actual:
>>> from datetime import datetime
>>> ahora=datetime.now()
>>> print(ahora)
2024-06-10 12:12:17.348933
Lapso entre dos fechas¶
El lapso de tiempo entre dos momentos es un objeto del tipo timedelta
>>> from datetime import datetime
>>> fecha = datetime(2004,3,27)
>>> print(fecha)
2004-03-27 00:00:00
>>> from datetime import timedelta
>>> dias=timedelta(days=10)
>>> fecha2 = fecha+dias
>>> fecha2
2004-04-06 00:00:00
>>> semanas=timedelta(weeks=20)
>>> fecha3 = fecha+semanas
2004-08-14 00:00:00
Los lapsos se pueden sumar o restar a una fecha para obtener otra fecha. Se crean mediante:
dias=timedelta(days=10)
semanas=timedelta(weeks=20)
Podemos pasar las siguientes unidades:
- weeks
- days
- hours
- minutes
- seconds
- milliseconds
- microseconds
Podemos combinar unidades de tiempo para obtener un lapso:
intervalo = datetime.timedelta(
days=1,
hours=10,
minutes=22)
Podemos calcular el intervalo entre dos fechas:
>>> ahora=datetime.now()
>>> ahora
>>> print(ahora)
2024-06-10 12:12:17.348933
>>> fecha = datetime(2024,3,27)
>>> ahora-fecha
datetime.timedelta(days=75, seconds=43937, microseconds=348933)
Extraer componentes¶
La clase datetime tiene métodos para extraer los componentes de una fecha:
>>> from datetime import datetime
>>> ahora = datetime.now()
>>> print(
... ahora.year,
... ahora.month,
... ahora.day,
... ahora.hour,
... ahora.minute,
... ahora.second,
... )
2025 7 12 11 51 4
La clase timedelta también permite extraer sus componentes:
>>> from datetime import datetime
>>> ahora = datetime.now()
>>> fecha = datetime(2025, 6, 12)
>>> lapso = ahora-fecha
>>> lapso.seconds
43545
>>> lapso.days
30
>>> horas=lapso.seconds/3600
>>> horas
12.095833333333333