Quel est le moyen le plus rapide de savoir 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 ayez littéralement deux objets de date, vous pouvez les soustraire et interroger l’objet résultant timedelta
pendant le nombre de jours:
>>> from datetime import date
>>> a = date(2011,11,24)
>>> b = date(2011,11,17)
>>> a-b
datetime.timedelta(7)
>>> (a-b).days
7
Et ça marche aussi avec les dates-heures - je pense que ça se termine 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)
>>> a-b
datetime.timedelta(6, 1)
>>> (a-b).days
6
Voulez-vous dire des jours calendaires complets ou des groupes de 24 heures?
Pour simplement 24 heures, en supposant que vous utilisiez la date et l'heure Python, l'objet timedelta a déjà une propriété days:
days = (a - b).days
Pour les jours civils, vous devrez arrondir un au jour le plus proche et b au jour le plus proche, en éliminant 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
Référencer mes commentaires sur d'autres réponses. C'est ainsi que je calculerais la différence en jours sur la base de 24 heures et de jours calendaires. l'attribut days fonctionne bien pendant 24 heures et la fonction fonctionne mieux pour les vérifications 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 __== '__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
Essayer:
(b-a).days
J'ai essayé avec b et a de type datetime.date
.