Obtener y formatear fecha y hora actual en Python

En este post veremos dos cosas para trabajar con la fecha y hora en Python:

  1. Cómo obtener la fecha y hora actual, separada por año, mes, día, hora, minuto, segundo y microsegundos
  2. Formatear la fecha y hora en Python para que sea legible y amigable.
Formatear y obtener fecha y hora actual en Python 3

Formatear y obtener fecha y hora actual en Python 3

Veremos algunos formatos útiles, como “Miércoles, 19 de diciembre del 2018” o “2018/12/19“, también con la hora, por ejemplo “Miércoles, 19 de diciembre del 2018. 7:30 AM” o incluso únicamente la hora, por ejemplo, “11:30 PM” o “23:10:15

Requisitos previos

Se necesita tener instalado Python 3 y PIP.

Obtener fecha y hora actual en Python

Primero se debe importar el objeto datetime del módulo datetime, así:

from datetime import datetime

Después, con datetime podemos llamar a now(), lo cual devuelve un objeto que tiene todas las propiedades que necesitamos para analizar la fecha actual.

Con ese objeto ya podemos crear todo tipo de formatos de fechas. A partir del mes saber su nombre, a partir de la hora saber si es AM o PM, etcétera.

Para ello, tendríamos que concatenar. Por dar un ejemplo:

fecha = "{}-{}-{}".format(ahora.year, ahora.month, ahora.day)

Aunque eso sería un poco engorroso y complicado en casos más grandes, así que, ¿por qué reinventar la rueda, si el lenguaje ya provee una forma de formatear fechas y horas?

Formatear fecha y hora en Python con strftime

Para formatear una fecha y hora en Python, la cual es obtenida con la función now, podemos llamar a strftime. Este método recibe el formato que deseamos, y devuelve la fecha formateada. Obtenemos la fecha y hora actual:

ahora = datetime.now()

Y luego formateamos, en este caso con algo como 2018-12-19:

print("Algo como 2018-12-19 => ", ahora.strftime("%Y-%m-%d"))

Llamamos al método strftime y le pasamos formateadores, el de %Y simboliza el año de 4 dígitos, el %m como mes y el %d el día.

¿De dónde salen estos formatos? de esta lista oficial.

Vamos a ver algunos casos comunes que seguramente a más de uno le servirán, pero por eso dejo ahí la lista de formateadores en caso de que las necesidades sean distintas.

Obtener la fecha y hora con nombre del día y nombre del mes

Como lo dije al inicio, se verá cómo obtener el nombre del día y el nombre del mes. Algo que imprimirá algo parecido a lo siguiente:

Miércoles, 19 de Diciembre del 2018

Aquí el código:

Utilizamos un diccionario y el método get del mismo para obtener el valor a partir del número de mes o día, luego simplemente formateamos una cadena.

Año, mes y día con hora completa

Otro formato útil es el que tiene la forma de “2018-12-19 20:15:22”. Esto es más fácil que el ejemplo anterior:

Lo único que se hace es aprovechar la función y los símbolos de formato que existen.

La hora en formato de 24 horas

Siguiendo con los formatos de fechas, veamos cómo obtener la hora en formato de 24 horas; esto es que, por ejemplo, a las 3 de la tarde sean a las 15 horas. El código es este:

Hora actual con AM o PM

Para terminar y mostrar AM o PM en la hora actual, con formato de 12 horas, se usa el modificador %p para el momento del día, así como el modificador %I en lugar del %H para la hora.

El código de ejemplo queda así:

Conclusión

Así de fácil es formatear fechas y horas en Python. Recuerda que siempre puedes comentar si tienes dudas.