Post Top Ad

Your Ad Spot

martes, 9 de julio de 2019

Cómo formatear fechas en Python

Introducción

Python viene con una variedad de objetos útiles que se pueden usar de manera inmediata. Los objetos de fecha son ejemplos de tales objetos. Los tipos de fechas son difíciles de manipular desde cero, debido a la complejidad de las fechas y horas. Sin embargo, los objetos de fecha de Python hacen que sea extremadamente fácil convertir las fechas en los formatos de cadena deseables.
El formateo de fecha es una de las tareas más importantes que enfrentará como programador. Las diferentes regiones de todo el mundo tienen diferentes formas de representar fechas / horas, por lo tanto, su objetivo como programador es presentar los valores de fecha de manera que los usuarios puedan leerlos.
Por ejemplo, es posible que deba representar un valor de fecha numéricamente como "02-23-2018". Por otro lado, es posible que deba escribir el mismo valor de fecha en un formato de texto más largo, como "23 de febrero de 2018". En otro escenario, es posible que desee extraer el mes en formato de cadena de un valor de fecha con formato numérico.
En este artículo, estudiaremos diferentes tipos de objetos de fecha junto con sus funcionalidades.

El módulo datetime

El datetimemódulo de Python , como probablemente haya adivinado, contiene métodos que se pueden usar para trabajar con valores de fecha y hora. Para usar este módulo, primero lo importamos a través de la importdeclaración de la siguiente manera:
import datetime  
Podemos representar valores de tiempo usando la timeclase. Los atributos para la timeclase incluyen la hora, el minuto, el segundo y el microsegundo.
Los argumentos para la timeclase son opcionales. Aunque si no especifica ningún argumento, obtendrá un tiempo de 0, lo cual es poco probable que sea lo que necesite la mayor parte del tiempo.
Por ejemplo, para inicializar un objeto de tiempo con un valor de 1 hora, 10 minutos, 20 segundos y 13 microsegundos, podemos ejecutar el siguiente comando:
t = datetime.time(1, 10, 20, 13)  
Para ver el tiempo, usemos la printfunción:
print(t)  
Salida:
01:10:20.000013  
Es posible que necesite ver la hora, el minuto, el segundo o el microsegundo solamente, aquí se explica cómo puede hacerlo:
print('hour:', t.hour)  
Salida:
hour: 1  
Los minutos, segundos y microsegundos para el tiempo anterior se pueden recuperar de la siguiente manera:
print('Minutes:', t.minute)  
print('Seconds:', t.second)  
print('Microsecond:', t.microsecond)  
Salida:
Minutes: 10  
Seconds: 20  
Microseconds: 13  
Los valores para la fecha del calendario se pueden representar a través de la dateclase. Las instancias tendrán atributos por año, mes y día.
Llamemos al todaymétodo para ver la fecha de hoy:
import datetime

today = datetime.date.today()  
print(today)  
Salida:
2018-09-15  
El código devolverá la fecha de hoy, por lo tanto, la salida que vea dependerá del día en que ejecute el script anterior.
Ahora llamemos al ctimemétodo para imprimir la fecha en otro formato:
print('ctime:', today.ctime())  
Salida:
ctime: Sat Sep 15 00:00:00 2018  
El ctimemétodo utiliza un formato de fecha y hora más largo que el de los ejemplos que vimos anteriormente. Este método se usa principalmente para convertir Unix-time (el número de segundos desde el 1 de enero de 1970) a un formato de cadena.
Y aquí es cómo podemos mostrar el año, el mes y el día usando la dateclase:
print('Year:', today.year)  
print('Month:', today.month)  
print('Day :', today.day)  
Salida
Year: 2018  
Month: 9  
Day : 15  

Conversión de fechas en cadenas con strftime

Ahora que ya sabe cómo crear objetos de fecha y hora, aprendamos a formatearlos en cadenas más legibles.
Para lograr esto, utilizaremos el strftimemétodo. Este método nos ayuda a convertir objetos de fecha en cadenas legibles. Toma dos parámetros, como se muestra en la siguiente sintaxis:
time.strftime(format, t)  
El primer parámetro es la cadena de formato, mientras que el segundo parámetro es el momento de formatear, que es opcional.
Este método también se puede usar en un datetimeobjeto directamente, como se muestra en el siguiente ejemplo:
import datetime

x = datetime.datetime(2018, 9, 15)

print(x.strftime("%b %d %Y %H:%M:%S"))  
Salida:
Sep 15 2018 00:00:00  
Hemos utilizado las siguientes cadenas de caracteres para formatear la fecha:
  • %b: Devuelve los tres primeros caracteres del nombre del mes. En nuestro ejemplo, devolvió "Sep".
  • %d: Devuelve el día del mes, del 1 al 31. En nuestro ejemplo, devolvió "15".
  • %Y: Devuelve el año en formato de cuatro dígitos. En nuestro ejemplo, devolvió "2018".
  • %H: Devuelve la hora. En nuestro ejemplo, devolvió "00".
  • %M: Devuelve el minuto, de 00 a 59. En nuestro ejemplo, devolvió "00".
  • %S: Devuelve el segundo, de 00 a 59. En nuestro ejemplo, devolvió "00".
No pasamos un tiempo, por lo tanto, los valores de tiempo son todos "00". El siguiente ejemplo muestra cómo se puede formatear la hora también:
import datetime

x = datetime.datetime(2018, 9, 15, 12, 45, 35)

print(x.strftime("%b %d %Y %H:%M:%S"))  
Salida:
Sep 15 2018 12:45:35  

La lista completa de códigos de caracteres

Aparte de las cadenas de caracteres indicadas anteriormente, el strftimemétodo toma varias otras directivas para dar formato a los valores de fecha:
  • %a: Devuelve los tres primeros caracteres del día de la semana, por ejemplo, miércoles.
  • %A: Devuelve el nombre completo del día de la semana, por ejemplo, miércoles.
  • %B: Devuelve el nombre completo del mes, por ejemplo, septiembre.
  • %w: Devuelve el día de la semana como un número, de 0 a 6, y el domingo es 0.
  • %m: Devuelve el mes como un número, de 01 a 12.
  • %p: Devuelve AM / PM por tiempo.
  • %y: Devuelve el año en formato de dos dígitos, es decir, sin el siglo. Por ejemplo, "18" en lugar de "2018".
  • %f: Devuelve microsegundos de 000000 a 999999.
  • %Z: Devuelve la zona horaria.
  • %z: Devuelve el desplazamiento UTC.
  • %j: Devuelve el número del día en el año, desde 001 hasta 366.
  • %W: Devuelve el número de la semana del año, de 00 a 53, y el lunes se cuenta como el primer día de la semana.
  • %U: Devuelve el número de la semana del año, de 00 a 53, con el domingo como el primer día de cada semana.
  • %c: Devuelve la versión de fecha y hora local.
  • %x: Devuelve la versión local de la fecha.
  • %X: Devuelve la versión local del tiempo.
Considere el siguiente ejemplo:
import datetime

x = datetime.datetime(2018, 9, 15)

print(x.strftime('%b/%d/%Y'))  
Salida:
Sep/15/2018  
Y aquí es cómo puede obtener el mes solamente:
print(x.strftime('%B'))  
Salida:
September  
Vamos a mostrar el año:
print(x.strftime('%Y'))  
Salida:
2018  
En este ejemplo hemos utilizado el código de formato %YObserve que Yestá en mayúsculas. Ahora escríbelo en minúsculas:
print(x.strftime('%y'))  
Salida:
18  
Esta vez, el siglo ha sido omitido. Como puede ver, con estos códigos de formato puede representar la fecha y la hora en casi cualquier forma que desee.

Convertir cadenas a fechas con strptime

El strftimemétodo nos ayudó a convertir objetos de fecha en cadenas más legibles. El strptimemétodo hace lo contrario, es decir, toma cadenas y las convierte en objetos de fecha que Python puede entender.
Aquí está la sintaxis del método:
datetime.strptime(string, format)  
El stringparámetro es el valor en formato de cadena que queremos convertir en formato de fecha. El formatparámetro es la directiva que especifica el formato que se debe tomar en la fecha posterior a la conversión.
Por ejemplo, digamos que necesitamos convertir la cadena "9/15/18" en un datetimeobjeto.
Primero importemos el datetimemódulo. Usaremos la frompalabra clave para poder hacer referencia a las funciones específicas del módulo sin el formato de punto:
from datetime import datetime  
Luego podemos definir la fecha en la forma de una cadena:
str = '9/15/18'  
Python no podrá entender la cadena anterior como una fecha y hora hasta que la convertimos en un datetimeobjeto real Podemos hacerlo con éxito llamando al strptimemétodo.
Ejecute el siguiente comando para convertir la cadena:
date_object = datetime.strptime(str, '%m/%d/%y')  
Llamemos ahora a la printfunción para mostrar la cadena en datetimeformato:
print(date_object)  
Salida:
2018-09-15 00:00:00  
Como puedes ver, la conversión fue exitosa!
Puede ver que la barra diagonal "/" se ha utilizado para separar los diversos elementos de la cadena. Esto le indica al strptimemétodo en qué formato está nuestra fecha, que en nuestro caso "/" se usa como separador.
Pero, ¿y si el día / mes / año estuviera separado por un "-"? Aquí es cómo manejarías eso:
from datetime import datetime

str = '9-15-18'  
date_object = datetime.strptime(str, '%m-%d-%y')

print(date_object)  
Salida:
2018-09-15 00:00:00  
Y de nuevo, gracias al especificador de formato, el strptimemétodo pudo analizar nuestra fecha y convertirla en un objeto de fecha.

Conclusión

En este artículo, estudiamos cómo formatear fechas en Python. Vimos cómo el datetimemódulo en Python puede usarse para la manipulación de valores de fecha y hora. El módulo contiene una serie de clases que se pueden usar para este propósito. Por ejemplo, la timeclase se usa para representar valores de tiempo, mientras que la dateclase se usa para representar valores de fecha de calendario.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas