En este post veremos dos cosas para trabajar con la fecha y hora en Python:
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”
Se necesita tener instalado Python 3 y PIP.
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.
"""
Fecha y hora actual en Python
@author parzibyte
"""
from datetime import datetime
ahora = datetime.now()
print("Justo ahora es:", ahora)
anio = ahora.year
print("El año es: ", anio)
mes = ahora.month
print("El mes es: ", mes)
dia = ahora.day
print("El día es: ", dia)
hora = ahora.hour
print("La hora es: ", hora)
minutos = ahora.minute
print("Los minutos son: ", minutos)
segundos = ahora.second
print("Los segundos son: ", segundos)
microsegundos = ahora.microsecond
print("Los microsegundos son: ", microsegundos)
"""
Salida (al menos al ejecutar el script):
Justo ahora es: 2018-12-19 22:45:45.694347
El año es: 2018
El mes es: 12
El día es: 19
La hora es: 22
Los minutos son: 45
Los segundos son: 45
Los microsegundos son: 694347
"""
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?
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.
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:
"""
Formatear fecha actual de modo que su formato quede como:
"Miércoles, 19 de Diciembre del 2018"
@author parzibyte
"""
from datetime import datetime
#Diccionarios de días y meses
meses = {
1: "Enero",
2: "Febrero",
3: "Marzo",
4: "Abril",
5: "Mayo",
6: "Junio",
7: "Julio",
8: "Agosto",
9: "Septiembre",
10: "Octubre",
11: "Noviembre",
12: "Diciembre",
}
dias = {
0: "Domingo",
1: "Lunes",
2: "Martes",
3: "Miércoles",
4: "Jueves",
5: "Viernes",
6: "Sábado",
}
ahora = datetime.now()
numero_mes = ahora.month
# A entero para quitar los ceros a la izquierda en caso de que existan
numero_dia = int(ahora.strftime("%w"))
# Leer diccionario
dia = dias.get(numero_dia)
mes = meses.get(numero_mes)
# Formatear
fecha = "{}, {} de {} del {}".format(dia, ahora.day, mes, ahora.year)
#Imprimir
print(fecha)
# Miércoles, 19 de Diciembre del 2018
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.
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:
"""
Formatear fecha actual de modo que su formato quede como:
"2018-19-12 18:08:50"
@author parzibyte
"""
from datetime import datetime
ahora = datetime.now()
fecha = ahora.strftime("%Y-%m-%d %H:%M:%S")
#Imprimir
print(fecha)
# 2018-12-20 00:10:34
Lo único que se hace es aprovechar la función y los símbolos de formato que existen.
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 en formato de 24 horas
@author parzibyte
"""
from datetime import datetime
ahora = datetime.now()
fecha = ahora.strftime("%H:%S:%M")
#Imprimir
print(fecha)
# 00:48:18
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í:
"""
Hora actual en formato de 12 horas,
con AM y PM
@author parzibyte
"""
from datetime import datetime
ahora = datetime.now()
fecha = ahora.strftime("%I:%S:%M %p")
#Imprimir
print(fecha)
# 03:31:33 AM
Así de fácil es formatear fechas y horas en Python. Recuerda que siempre puedes comentar si tienes dudas.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios