Je suis nouveau dans les types de date et d'heure python.
J'ai une valeur de date.
date = '2018-11-10 10:55:31+00:00'
Je dois vérifier que cette valeur de date est antérieure à 90 jours.
J'ai essayé :
from datetime import datetime
from datetime import timedelta
past = datetime.now() - timedelta(days=90)
date = '2018-11-10 10:55:31+00:00'
if past > date :
print("This is older than 90 days")
échouant avec l'erreur suivante:TypeError: '>' not supported between instances of 'datetime.datetime' and 'str'
Cela peut être dû au fait que le format de date pour "passé" et la valeur de date que j'ai transmise sont différents.
Comment puis-je trouver ça?
Vous pouvez utiliser le package dateutil
et convertir simplement votre chaîne de date date
en objet datetime, puis vérifier la condition avec:
from dateutil import parser
past = datetime.now() - timedelta(days=90)
new_date = parser.parse("2018-11-10 10:55:31+00:00")
if past > new_date :
print("This is older than 90 days")
que ça:)
Vous devez convertir votre chaîne de date en datetime
. Vous pouvez le faire de deux manières.
datetime.strptime
Par exemple, convertissez d'abord en datetime
avant votre comparaison. Cela vous oblige à spécifier le format précisément à l'avance:
date = '2018-11-10 10:55:31+00:00'
date = datetime.strptime(date[:-6], '%Y-%m-%d %H:%M:%S')
print(date)
datetime.datetime(2018, 11, 10, 10, 55, 31)
Un outil populaire est dateutil.parser
, qui est capable d'analyser les formats datetime les plus courants sans le format spécifié dans avance:
from datetime import datetime, timedelta
from dateutil import parser
past = datetime.now() - timedelta(days=90)
date1 = '2018-11-10 10:55:31+00:00'
date2 = '2017-11-10 10:55:31+00:00'
for date in (date1, date2):
if past > parser.parse(date[:-6]):
print(f'This is older than 90 days: {date}')
This is older than 90 days: 2017-11-10 10:55:31+00:00