Formato de fecha en Python

agosto 12, 2018 Seguridad y Cumplimiento, MOVEit

Hay muchos tipos de objetos diferentes que podemos usar en Python. Las fechas son uno de esos objetos que son infames en casi todos los lenguajes de programación. Los tipos de fecha son muy difíciles de averiguar, pero Python tiene varias formas de manipular fechas y horas.Podemos escribir la fecha de maneras diferentes. Si hoy fuera el 4 de febrero de 2018, podríamos representar la misma fecha de muchas maneras y seguirían siendo reconocibles, como:

  • February 4th, 2018
  • Feb 04, 2018
  • 2/4/18
  • 2-4-18
  • 02/04/18
  • 4-Feb-2018

(Datos de formato estándar Ingles)

Demasiadas formas de representar la misma fecha, ¿no? Veamos cómo las adaptamos para que el lenguaje lo pueda reconocer automáticamente.

Primero, para que Python manipule el formato de fecha, debemos importar el módulo nativo datetime. Este módulo contiene todos los métodos que necesitamos para deshacernos del problema de formato. Podemos importarlo con una simple declaración import. Estamos usando la declaración from para poder hacer referencia a las funciones sin tener que usar la notación de puntos.

>>> from datetime import datetime

Una vez hagamos esto, tendremos acceso a una serie de métodos. Primero, supongamos que estamos usando una fecha que inventamos. Por ejemplo, usare 2/4/18 y para comenzar, lo representare como una cadena de caracteres (string) simple.

>>> strDate = '2/4/18'

No podemos hacer mucho con una cadena, así que tenemos que convertir esta cadena en un objeto datetime para que Python pueda entender que la cadena es en realidad una fecha. Una forma de hacerlo es usando el método strptime. Este método en el objeto datetime nos permite pasar una fecha y hora y usar varios operadores de formato diferentes para manipular su función.

Mejore su carrera en TI aprendiendo a automatizar con Python. Empiece con esta guía gratuita de Python.

Tomando nuestra fecha de ejemplo, tal vez quiera cambiarla de 2/4/18 a Feb 04, 2018. Para hacer eso, pasare la cadena original como primer argumento para el método strptime (). Este método convierte una cadena en un objeto de fecha que Python puede entender. El método strptime () le permite pasar una cadena simple como 2/4/18 y una cadena de formato simple para definir dónde se encuentra el día, el mes y el año.

>>> objDate = datetime.strptime(strDate, '%m/%d/%y')
>>> objDate
datetime.datetime(2018, 2, 4, 0, 0)

Ahora que Python sabe que esta cadena es una fecha real, podemos dejarla tal como está o convertirla a otra cadena con formato diferente. En este caso, me gustaría convertirlo nuevamente al Feb 04, 2018. Para hacer esto, usare el método strftime () que hace lo opuesto de lo que acabamos de hacer. Este método convierte un objeto datetime en una cadena de caracteres.

>>> datetime.strftime(objDate,'%b %d, %Y')
'Feb 04, 2018'

Ahora volvemos a una cadena simple pero esta vez se ha convertido a un formato diferente. ¿Y si solo se quiere el año de la fecha?

>>> datetime.strftime(objDate,'%Y')
'2018'

Tal vez solo queremos el día sin el cero inicial. Eso requiere un poco de ayuda del método de cadena lstrip ().

>>> datetime.strftime(objDate,'%d').lstrip('0')
'4'

Al usar una combinación de métodos strptime () y strftime (), podemos cambiar la representación de una fecha casi infinitamente. La clave es entender cada uno de los operadores de formato y lo que significan y representan.

Adam Bertram

Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.