Skip to content

La librería Datetime

Para manejar fechas en Python se suele utilizar la librería datetime que incorpora los tipos de datos date, time y datetime para representar fechas y funciones para manejarlas. Algunas de las operaciones más habituales que permite son:

  • Acceder a los distintos componentes de una fecha (año, mes, día, hora, minutos, segundos y microsegundos).
  • Convertir cadenas con formato de fecha en los tipos date, time o datetime.
  • Convertir fechas de los tipos date, time o datetime en cadenas formateadas de acuerdo a diferentes formatos de fechas.
  • Hacer aritmética de fechas (sumar o restar fechas).
  • Comparar fechas.

Los tipos de datos date, time y datetime

  • date(año, mes, dia) : Devuelve un objeto de tipo date que representa la fecha con el año, mes y dia indicados.
  • time(hora, minutos, segundos, microsegundos) : Devuelve un objeto de tipo time que representa un tiempo la hora, minutos, segundos y microsegundos indicados.
  • datetime(año, mes, dia, hora, minutos, segundos, microsegundos) : Devuelve un objeto de tipo datetime que representa una fecha y hora con el año, mes, dia, hora, minutos, segundos y microsegundos indicados.
1
2
3
4
5
6
from datetime import date, time, datetime

date(2020, 12, 25) # output datetime.date(2020, 12, 25)
time(13,30,5) # output datetime.time(13, 30, 5)
datetime(2020, 12, 25, 13, 30, 5) # output datetime.datetime(2020, 12, 25, 13, 30, 5)
print(datetime(2020, 12, 25, 13, 30, 5)) # output 2020-12-25 13:30:05

--

Acceso a los componentes de una fecha

  • date.today() : Devuelve un objeto del tipo date la fecha del sistema en el momento en el que se ejecuta.
  • datetime.now(): Devuelve un objeto del tipo datetime con la fecha y la hora del sistema en el momento exacto en el que se ejecuta.
  • d.year : Devuelve el año de la fecha d, puede ser del tipo date o datetime.
  • d.month : Devuelve el mes de la fecha d, que puede ser del tipo date o datetime.
  • d.day : Devuelve el día de la fecha d, que puede ser del tipo date o datetime.
  • d.weekday() : Devuelve el día de la semana de la fecha d, que puede serpuede ser del tipo date o datetime.
  • t.hour : Devuelve las horas del tiempo t, que puede ser del tipo time o datetime.
  • t.hour : Devuelve los minutos del tiempo t, que puede ser del tipo time o datetime.
  • t.second : Devuelve los segundos del tiempo t, que puede ser del tipo time o datetime.
  • t.microsecond : Devuelve los microsegundos del tiempo t, que puede ser del tipo time o datetime.
from datetime import date, time, datetime
print(date.today()) # output 2020-04-11
dt = datetime.now()
dt.year # output 2020
dt.month # output 4
dt.day # output 11
dt.hour # output 22
dt.minute # output 5
dt.second # output 45
dt.microsecond # output 1338

Conversión de fechas en cadenas con diferentes formatos

  • d.strftime(formato) : Devuelve la cadena que resulta de transformar la fecha d con el formato indicado en la cadena formato. La cadena formato puede contener los siguientes marcadores de posición: %Y (año completo), %y (últimos dos dígitos del año), %m (mes en número), %B (mes en palabra), %d (día), %A (día de la semana), %a (día de la semana abrevidado), %H (hora en formato 24 horas), %I (hora en formato 12 horas), %M (minutos), %S (segundos), %p (AM o PM), %C (fecha y hora completas), %x (fecha completa), %X (hora completa).
1
2
3
4
5
6
from datetime import date, time, datetime
d = datetime.now()
print(d.strftime('%d-%m-%Y')) # output 202013-04-2020
print(d.strftime('%A, %d %B, %y')) # output 2020Monday, 13 April, 20
print(d.strftime('%H:%M:%S')) # output 202020:55:53
print(d.strftime('%H horas, %M minutos y %S segundos')) # output 202020 horas, 55 minutos y 53 segundos

Conversión de cadenas en fechas

  • strptime(s, formato) : Devuelve el objeto de tipo date, time o datetime que resulta de convertir la cadena s de acuerdo al formato indicado en la cadena formato. La cadena formato puede contener los siguientes marcadores de posición: %Y (año completo), %y (últimos dos dígitos del año), %m (mes en número), %B (mes en palabra), %d (día), %A (día de la semana), %a (día de la semana abrevidado), %H (hora en formato 24 horas), %I (hora en formato 12 horas), %M (minutos), %S (segundos), %p (AM o PM), %C (fecha y hora completas), %x (fecha completa), %X (hora completa).
1
2
3
from datetime import date, time, datetime
datetime.strptime('15/4/2020', '%d/%m/%Y') # output datetime.datetime(2020, 4, 15, 0, 0)
datetime.strptime('2020-4-15 20:50:30', '%Y-%m-%d %H:%M:%S') # output datetime.datetime(2020, 4, 15, 20, 50, 30)

Aritmética de fechas

Para representar el tiempo transcurrido entre dos fechas se utiliza el tipo timedelta.

  • timedelta(dias, segundos, microsegundos) : Devuelve un objeto del tipo timedelta que representa un intervalo de tiempo con los dias, segundos y micorsegundos indicados.
  • d1 - d2 : Devuelve un objeto del tipo timedelta que representa el tiempo transcurrido entre las fechas d1 y d2 del tipo datetime.
  • d + delta : Devuelve la fecha del tipo datetime que resulta de sumar a la fecha d el intervalo de tiempo delta, donde delta es del tipo timedelta.
1
2
3
4
from datetime import date, time, datetime, timedelta
d1 = datetime(2020, 1, 1)
d1 + timedelta(31, 3600) # output datetime.datetime(2020, 2, 1, 1, 0)
datetime.now() - d1 # output datetime.timedelta(days=132, seconds=1826, microseconds=895590)