J'ai la date suivante:
2005-08-11T16:34:33Z
J'ai besoin de savoir si cette date est antérieure ou postérieure à datetime (2009,04,01) et je n'arrive pas à trouver une méthode qui convertira cette chaîne en quelque chose qui me permette de la comparer à datetime. (2009,04,01) de manière significative.
Comme la chaîne est au format ISO, elle peut être comparée directement avec la version au format ISO de la variable datetime
mentionnée:
>>> s='2005-08-11T16:34:33Z'
>>> t=datetime.datetime(2009,04,01)
>>> t.isoformat()
'2009-04-01T00:00:00'
>>> s < t
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't compare datetime.datetime to str
>>> s < t.isoformat()
True
>>> z='2009-10-01T18:20:12'
>>> z < t.isoformat()
False
comme vous le voyez, bien que vous ne puissiez pas comparer chaîne avec des objets datetime, tant que les chaînes sont au format ISO, vous pouvez les comparer avec la fonction .isoformat()
des objets datetime. C'est la beauté de la représentation sous forme de chaîne de dates et d'heures au format ISO: elle est correctement comparable et se trie correctement sous forme de chaînes , sans nécessiter nécessairement une conversion en d'autres types.
Si vous souhaitez convertir, vous pouvez bien sûr:
>>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2005, 8, 11, 16, 34, 33)
Je vous conseillerais de consulter: http://dateutil.readthedocs.io/fr/stable/parser.html
from dateutil.parser import parse
datetime = parse("Sat Oct 11 17:13:46 UTC 2003")
Si vous connaissez la chaîne, utilisez simplement la fonction datetime.datetime (année, mois, jour, heure, minute, seconde). Fractionnez votre chaîne pour obtenir les variables appropriées et insérez-la pour en faire un type de date/heure. Ensuite, comparez-le avec tout ce dont vous avez besoin.
Ou vous pouvez utiliser le format iso comme les gens l’ont également suggéré.