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 *