En nuestro artículo anterior, Trucos de Formato de Cadenas en Python, vimos que podemos personalizar la manera en que se muestran los contenidos de las variables al imprimirlos en un string, particularmente, haciendo referencia al modo depuración y los separadores de miles. Hoy quiero comentarte otras aplicaciones que pueden serte (muy) útiles: los formatos de fecha.
Los formatos de fecha combinan símbolos % con los siguientes caracteres, para mostrar algún aspecto de la fecha en particular:
- %Y: años completos
- %y: últimos dos dígitos del año
- %m: meses (como números antecedido por ceros, por ejemplo: 09 para septiembre)
- %-m: meses (como números decimales: 9 para septiembre)
- %b: mes abreviado como texto (Sep para septiembre)
- %B: mes completo (September)
- %d: días (como números antecedido por ceros, por ejemplo: 05)
- %-d: días (como números decimales, por ejemplo: 5)
- %a: día de la semana en inglés, abreviado (Mon)
- %A: día de la semana en inglés (Monday)
- %w: día de la semana (0 para domingo, hasta 6 para sábado)
- %H: horas en formato 24 horas, antecedido por cero si es de un solo dígito
- %-H: horas en formato 24 horas, como número decimal
- %I: horas en formato 12 horas, antecedido por cero si es de un solo dígito
- %-I: horas en formato 12 horas, como número decimal
- %M: minutos (antecedido por cero si es de un solo dígito)
- %-M: minutos como número decimal
- %S: segundos (antecedido por cero si es de un solo dígito)
- %-S: segundos como número decimal
- %p: AM/PM
- %j: día del año
- %U: número de semana, tomando al domingo como primer día de la semana
- %W: número de semana, tomando al lunes como primer día de la semana
Debemos tener en cuenta la distinción entre minúsculas y mayúsculas, ya que como vemos, tienen significados diferentes, como por ejemplo ocurre en el caso de meses/minutos. En otros casos, utilizar la capitalización incorrecta podría provocar que directamente el código utilizado no sea interpretado. Esto nos ayudará a evitar errores difíciles de depurar.
También, podremos intercalar los símbolos anteriores con dos puntos o barras, para separar horas y fechas respectivamente, que se imprimirán literalmente, como veremos en los siguientes ejemplos.
Ahora que conocemos la estructura básica a partir de la cual se construyen los formatos de fechas, veamos algunos ejemplos de aplicación, para que termine de quedar claro.
Como es esperable, necesitaremos poder crear fechas, para lo cual podemos auxiliarnos de la librería datetime:
import datetime
hoy = datetime.datetime.utcnow()
print(f"fecha actual : {hoy}\n")
#una vez tenemos nuestra variable fecha, basta indicar con dos puntos el formato:
print(f"fecha y hora: {hoy:%m/%d/%Y %H:%M:%S}")
print(f"fecha: {hoy:%d/%m/%Y}")
print(f"hora y minutos (24 hs): {hoy:%H:%M}")
print(f"hora, minutos y segundos (24 hs): {hoy:%H:%M:%S}")
print(f"hora, minutos y segundos (12 hs): {hoy:%I:%M:%S %p}")
print(f"hoy es el día {hoy:%j} del año")
____________________________________________________________________
fecha actual : 2022-11-30 09:11:09.411165
fecha y hora: 11/30/2022 09:11:09
fecha: 30/11/2022
hora y minutos (24 hs): 09:11
hora, minutos y segundos (24 hs): 09:11:09
hora, minutos y segundos (12 hs): 09:11:09 AM
hoy es el día 334 del año
¿Qué otra forma de expresar fechas y horas se te ocurre, ahora que conoces cómo hacerlo? Como siempre, la mejor alternativa es ir al código, ¡y hacer la prueba!