Analizar fecha ISO 8601 en Python
- Estructura de la ISO 8601 Fecha
-
Utilice
strptime()
ystrtime()
para analizar la fecha ISO 8601 en Python -
Utilice
fromisoformat()
para analizar la fecha ISO 8601 en Python -
Use
dateutil
para analizar la fecha ISO 8601 en Python
Las fechas son importantes para todos y cruciales para muchas aplicaciones que usamos. Como desarrollador, puede ser un poco confuso con las diferentes zonas horarias u objetos de tiempo que existen y trabajar alrededor de ellos.
Sin embargo, a menudo existen estándares que facilitan el trabajo, y eso es lo que implica este artículo. Además, discutiremos la estructura de una fecha ISO 8601 típica y le mostraremos cómo analizar los objetos DateTime típicos en el DateTime estandarizado que se puede usar en todas partes.
Estructura de la ISO 8601 Fecha
La ISO (Organización Internacional para la Estandarización) trabaja en la creación de estandarización para sus países miembros en diferentes campos, que a menudo abarcan áreas técnicas y no técnicas. Áreas como la ingeniería son parte de sus prioridades.
Las numerosas estandarizaciones incluyen el ISO 8601 DateTime, representado por el mes, día, hora, minutos, segundos y milisegundos. Se utiliza como el estándar de fecha y hora en todo el mundo para cualquier dato y se basa en el tiempo, lo que ayuda a evitar tergiversaciones y errores.
Si va a crear una aplicación de Python que se utilice en todo el mundo, es importante comprender el objeto DateTime ISO 8601 y analizarlo puede ser un requisito.
La fecha y hora ISO 8601 se representa con el año que comienza a la izquierda y termina con un parámetro de milisegundos y, a menudo, se combina con otros caracteres informáticos de la T
a la Z
.
2022-08-10 17:00:00.000
El objeto ISO DateTime anterior representa el día 11 de agosto del año 2022 a las 5 p.m. dentro de la zona horaria local.
Es importante indicar que la cadena ISO 8601 DateTime requiere la sección de fecha, pero la sección de hora es opcional. Son distintas variantes de la ISO 8601, pero la anterior sería la referencia de este artículo.
Utilice strptime()
y strtime()
para analizar la fecha ISO 8601 en Python
Python viene preinstalado con diferentes módulos que son útiles para diferentes operaciones, y uno de esos módulos preinstalados es datetime
, que ayuda con las operaciones de fecha y hora. Con el módulo datetime
, puede obtener valores datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
.
El método now()
nos ayuda a obtener y desarrollar la fecha y la hora actuales y proporciona el típico objeto DateTime que podemos manipular o analizar para obtener cualquier información que necesitemos.
from datetime import datetime
todaysDate = datetime.now()
print(todaysDate)
Producción :
2022-09-28 06:55:56.832983
Además, el método today()
se puede utilizar para lograr el mismo valor. Aunque, se prefiere el método ahora()
al método hoy()
.
AnoTodaysDate = datetime.today()
Producción :
2022-09-29 10:48:43.311880
Antes, analizamos el típico objeto DateTime de Python en el DateTime ISO 6801 estandarizado. Revirtamos esto creando el ISO 6801 DateTime con el objeto Python DateTime.
Para lograr esto, necesitamos el método strftime()
, que nos ayuda a convertir los objetos DateTime a su representación de cadena, esta vez, la cadena ISO 6801 DateTime.
from datetime import datetime
todaysDate = datetime.now()
todaysDateInISO = todaysDate.strftime("%Y-%m-%dT%H:%M:%S.%f%z")
print(todaysDateInISO)
Producción :
2022-09-29T11:08:29.413183
El enlace todaysDate
contiene el objeto Python DateTime para la fecha y la hora actuales, y luego pasamos el enlace como argumento al método strftime()
para crear el equivalente de cadena ISO 8601 DateTime.
Con estos ahora, ¿cómo convertimos la cadena ISO 8601 DateTime en un objeto Python DateTime? Necesitamos un método que haga lo contrario del método strftime()
, el strptime()
.
Este método crea un objeto DateTime a partir de una cadena DateTime.
Por lo tanto, pasaremos una cadena ISO 6801 DateTime como primer argumento de strptime()
y otro argumento que define el formato de fecha que desea: el objeto Python DateTime %Y-%m-%dT%H:%M:%SZ
.
parsedDate = datetime.strptime("2022-03-04T21:08:12Z", "%Y-%m-%dT%H:%M:%SZ")
print(parsedDate)
Producción :
2022-03-04 21:08:12
El formato de fecha Y-%m-%dT%H:%M:%SZ
procesa el año, mes, día, hora, minuto y segundo usando los códigos de formato especificados dentro del objeto Python DateTime.
Utilice fromisoformat()
para analizar la fecha ISO 8601 en Python
Al igual que los métodos strftime()
y strptime()
, existen métodos dedicados que pueden crear cadenas ISO 6801 DateTime o convertirlas en objetos Python DateTime. El método isoformat()
ayuda a devolver la hora formateada según ISO, que se procesa en el formato YYYY-MM-DD HH:MM:SS.mmmmmm
.
Y lo que es más importante, el método fromisoformat()
toma la cadena ISO 8601 DateTime y devuelve el equivalente del objeto Python DateTime.
Para crear un ISO 8601 a partir de un objeto Python DateTime, primero puede crear el objeto DateTime usando el método now()
y obtener la propiedad ISO 8601 (formato) del resultado usando isoformat()
.
from datetime import datetime
todaysDate = datetime.now()
todaysDateInISO = todaysDate.isoformat()
print(todaysDateInISO)
Producción :
2022-09-28T07:46:13.350585
El resultado suele contener un separador entre la fecha y la hora. Aquí, es T
y se puede cambiar. Puede cambiar el separador pasando un argumento.
todaysDateInISO = todaysDate.isoformat("$")
print(todaysDateInISO)
Producción :
2022-09-28$07:48:11.060212
Ahora, al quid de la cuestión, podemos analizar la cadena ISO 8601 DateTime en un objeto Python DateTime típico.
parsedDate = datetime.fromisoformat(todaysDateInISO)
print(parsedDate)
Producción :
2022-09-29 14:38:17.928655
Use dateutil
para analizar la fecha ISO 8601 en Python
El módulo Python dateutil
es un módulo de terceros que puede utilizar para ampliar las funcionalidades accesibles a través del módulo datetime
integrado.
Para instalarlo, puede utilizar el comando pip
:
pip install python-dateutil
Producción :
Collecting python-dateutil
Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 kB 506.3 kB/s eta 0:00:00
Collecting six>=1.5
Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, python-dateutil
Successfully installed python-dateutil-2.8.2 six-1.16.0
Además, también puede introducir funcionalidades de zona horaria usando otro módulo de terceros llamado pytz
, que se puede instalar usando el comando pip
.
pip install pytz
Estas bibliotecas pueden crear fácilmente un formato de fecha ISO 8601 basado en una zona horaria y analizar la cadena ISO 8601 DateTime en el típico objeto Python DateTime.
Para el ejemplo, utilizaremos la zona horaria US/Eastern
y crearemos una cadena ISO 8601 DateTime utilizando el método timezone()
, el método now()
y el método isoformat()
.
from datetime import datetime
import pytz
usEasternDate = datetime.now(pytz.timezone("US/Eastern"))
print(usEasternDate)
usEasternDateISO = usEasternDate.isoformat()
print(usEasternDateISO)
Producción :
2022-09-29 10:01:17.654150-04:00
2022-09-29T10:01:17.654150-04:00
Luego, para analizar la cadena ISO 8601 DateTime en el objeto Python DateTime, podemos usar el método parse()
con la fecha ISO pasada como argumento.
parsedDate = parser.parse(usEasternDateISO)
print(parsedDate)
Producción :
2022-09-29 10:01:17.654150-04:00
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn