Jours entre deux dates en Python

Quel est le moyen le plus court de voir combien de jours entiers se sont écoulés entre deux dates? Voici ce que je fais maintenant.

math.floor((b - a).total_seconds()/float(86400)) 

En supposant que vous avez littéralement deux objects date, vous pouvez soustraire l’un de l’autre et interroger l’ object timedelta résultant pour le nombre de jours:

 >>> from datetime import date >>> a = date(2011,11,24) >>> b = date(2011,11,17) >>> ab datetime.timedelta(7) >>> (ab).days 7 

Et ça marche aussi avec des datetimes – je pense que ça arrondit au jour le plus proche:

 >>> from datetime import datetime >>> a = datetime(2011,11,24,0,0,0) >>> b = datetime(2011,11,17,23,59,59) >>> ab datetime.timedelta(6, 1) >>> (ab).days 6 

Voulez-vous dire des jours civils complets ou des groupes de 24 heures?

Pour seulement 24 heures, en supposant que vous utilisez le datetime de Python, l’object timedelta a déjà une propriété days:

 days = (a - b).days 

Pour les jours calendaires, vous devez arrondir le jour le plus proche au jour le plus proche, et b jusqu’au jour le plus proche, en supprimant le jour partiel de chaque côté:

 roundedA = a.replace(hour = 0, minute = 0, second = 0, microsecond = 0) roundedB = b.replace(hour = 0, minute = 0, second = 0, microsecond = 0) days = (roundedA - roundedB).days 

Essayer:

 (ba).days 

J’ai essayé avec b et un de type datetime.date .

Référencement de mes commentaires sur d’autres réponses. C’est ainsi que je calculerais la différence en jours sur 24 heures et jours de calendrier. l’atsortingbut days fonctionne bien pendant 24 heures et la fonction fonctionne mieux pour les contrôles de calendrier.

 from datetime import timedelta, datetime def cal_days_diff(a,b): A = a.replace(hour = 0, minute = 0, second = 0, microsecond = 0) B = b.replace(hour = 0, minute = 0, second = 0, microsecond = 0) return (A - B).days if __name__ == '__main__': x = datetime(2013, 06, 18, 16, 00) y = datetime(2013, 06, 19, 2, 00) print (y - x).days # 0 print cal_days_diff(y, x) # 1 z = datetime(2013, 06, 20, 2, 00) print (z - x).days # 1 print cal_days_diff(z, x) # 2