Estou tentando analisar strings de tempo HTML em Python :
from datetime import datetime
input = "2025-03-24T07:01:53+00:00"
output = datetime.strptime(input, "%Y-%m-%d%X%:z")
print(output)
Executar isso com Python 3.13 retorna o seguinte erro:
Traceback (most recent call last):
File "/Users/dread_pirate_roberts/html_time_converter/main.py", line 69, in <module>
output = datetime.strptime(input, "%Y-%m-%d%X%:z")
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/_strptime.py", line 674, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/_strptime.py", line 445, in _strptime
raise ValueError("'%s' is a bad directive in format '%s'" %
(bad_directive, format)) from None
ValueError: ':' is a bad directive in format '%Y-%m-%d%X%:z'
Isso não faz sentido para mim porque %:z
foi adicionado no Python 3.12 .
Editar: Descobri que meu código na verdade tem 2 bugs. Primeiro, a string de formato deve incluir um T
. Além disso, a resposta do InSync, então o código deve ser:
from datetime import datetime
input = "2025-03-24T07:01:53+00:00"
output = datetime.strptime(input, "%Y-%m-%dT%X%z")
print(output)
Este é um bug conhecido do CPython .
Por enquanto (3.13),
%:z
só funciona em.strftime()
:Também deve ser observado que
%z
já analisa+00:00
e entradas semelhantes: