C贸mo formatear fechas en Python

    Introducci贸n

    Python viene con una variedad de objetos 煤tiles que se pueden usar de inmediato. Los objetos de fecha son ejemplos de tales objetos. Los tipos de fecha son dif铆ciles de manipular desde cero, debido a la complejidad de fechas y horas. Sin embargo, los objetos de fecha de Python facilitan enormemente la conversi贸n de fechas en los formatos de cadena deseables.

    El formateo de fechas es una de las tareas m谩s importantes a las que te enfrentar谩s como programador. Las diferentes regiones del mundo tienen diferentes formas de representar fechas / horas, por lo tanto, su objetivo como programador es presentar los valores de fecha de una manera que los usuarios puedan leer.

    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 de fecha y hora

    Python datetime El m贸dulo, como probablemente adivin贸, contiene m茅todos que pueden usarse para trabajar con valores de fecha y hora. Para usar este m贸dulo, primero lo importamos a trav茅s del import declaraci贸n de la siguiente manera:

    import datetime
    

    Podemos representar valores de tiempo usando el time clase. Los atributos de la time la clase incluye la hora, minuto, segundo y microsegundo.

    Los argumentos a favor del time las clases son opcionales. Aunque si no especifica ning煤n argumento obtendr谩 un tiempo de 0, que es poco probable que sea lo que necesita 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 la hora, usemos el print funci贸n:

    print
    

    Salida:

    01:10:20.000013
    

    Es posible que necesite ver la hora, el minuto, el segundo o el microsegundo solamente, as铆 es como puede hacerlo:

    print('hour:', t.hour)
    

    Salida:

    hour: 1
    

    Los minutos, segundos y microsegundos del 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 mediante el date clase. Las instancias tendr谩n atributos para a帽o, mes y d铆a.

    Llamemos al today m茅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, el resultado que vea depender谩 del d铆a en que ejecute el script anterior.

    Ahora llamemos al ctime m茅todo para imprimir la fecha en otro formato:

    print('ctime:', today.ctime())
    

    Salida:

    ctime: Sat Sep 15 00:00:00 2018
    

    los ctime El m茅todo usa un formato de fecha y hora m谩s largo que los ejemplos que vimos antes. Este m茅todo se utiliza principalmente para convertir el tiempo Unix (el n煤mero de segundos desde el 1 de enero de 1970) a un formato de cadena.

    Y as铆 es como podemos mostrar el a帽o, el mes y el d铆a usando el date clase:

    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 sabe c贸mo crear objetos de fecha y hora, aprendamos a formatearlos en cadenas m谩s legibles.

    Para lograr esto, usaremos el strftime m茅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 la hora de formatear, que es opcional.

    Este m茅todo tambi茅n se puede utilizar en datetime objeto 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 primeros tres 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 dadas anteriormente, el strftime El m茅todo toma varias otras directivas para formatear los valores de fecha:

    • %a: Devuelve los primeros tres 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, siendo el domingo 0.
    • %m: Devuelve el mes como un n煤mero, de 01 a 12.
    • %p: Devuelve AM / PM para la hora.
    • %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 del a帽o, de 001 a 366.
    • %W: Devuelve el n煤mero de 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 semana del a帽o, de 00 a 53, contando 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 de la hora.

    Considere el siguiente ejemplo:

    import datetime
    
    x = datetime.datetime(2018, 9, 15)
    
    print(x.strftime('%b/%d/%Y'))
    

    Salida:

    Sep/15/2018
    

    Y as铆 es como puede obtener solo el mes:

    print(x.strftime('%B'))
    

    Salida:

    September
    

    Visualicemos el a帽o:

    print(x.strftime('%Y'))
    

    Salida:

    2018
    

    En este ejemplo hemos utilizado el c贸digo de formato %Y. Note que el Y est谩 en may煤sculas. Ahora escr铆balo en min煤sculas:

    print(x.strftime('%y'))
    

    Salida:

    18
    

    Esta vez, se ha omitido el siglo. Como puede ver, con estos c贸digos de formato puede representar la fecha y hora en casi cualquier forma que desee.

    Conversi贸n de cadenas a fechas con strptime

    los strftime El m茅todo nos ayud贸 a convertir objetos de fecha en cadenas m谩s legibles. los strptime El m茅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)
    

    los string par谩metro es el valor en formato de cadena que queremos convertir en formato de fecha. los format par谩metro es la directiva que especifica el formato que debe tomar la fecha posterior a la conversi贸n.

    Por ejemplo, digamos que necesitamos convertir la cadena “15/9/18” en una datetime objeto.

    Primero importemos el datetime m贸dulo. Usaremos el from palabra 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 forma de cadena:

    str="9/15/18"
    

    Python no podr谩 entender la cadena anterior como una fecha y hora hasta que la convierta en una datetime objeto. Podemos hacerlo con 茅xito llamando al strptime m茅todo.

    Ejecute el siguiente comando para convertir la cadena:

    date_object = datetime.strptime(str, '%m/%d/%y')
    

    Llamemos ahora al print funci贸n para mostrar la cadena en datetime formato:

    print(date_object)
    

    Salida:

    2018-09-15 00:00:00
    

    Como puede ver, la conversi贸n se realiz贸 correctamente.

    Puede ver que la barra diagonal “/” se ha utilizado para separar los distintos elementos de la cadena. Esto le dice al strptime m茅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 “-“? As铆 es como 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, strptime El m茅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 como el datetime El m贸dulo en Python se puede utilizar para la manipulaci贸n de valores de fecha y hora. El m贸dulo contiene una serie de clases que se pueden utilizar para este prop贸sito. Por ejemplo, el time se utiliza para representar valores de tiempo mientras que date La clase se usa para representar los valores de la fecha del calendario.

     

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *