Jours entre deux dates en Python [dupliquer]

cette question a déjà une réponse ici:

Quel est le chemin le plus court pour 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))
91
demandé sur Paul D. Waite 2011-11-24 18:15:06
la source

4 ответов

en supposant que vous avez littéralement deux objets de date, vous pouvez soustraire l'un de l'autre et demander le résultat timedelta objet pour 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 il fonctionne avec datetimes trop - je pense qu'il tourne vers le bas 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
165
répondu Paul D. Waite 2017-04-26 20:01:23
la source

voulez-vous dire jours civils complets, ou groupes de 24 heures?

pour simplement 24 heures, en supposant que vous utilisez datetime de Python, alors l'objet timedelta possède déjà une propriété de jours:

days = (a - b).days

pour les jours civils, vous devrez arrondir a vers le bas au jour le plus proche, et b jusqu'au jour le plus proche, se débarrasser de la partie de jour 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
31
répondu DNS 2013-06-20 18:37:17
la source

, Essayez:

(b-a).days

j'ai essayé avec b et a de type datetime.date .

5
répondu M S 2011-11-25 15:28:10
la source

faisant référence à mes commentaires sur d'autres réponses. C'est ainsi que je travaille la différence en jours, basé sur 24 heures et jours de calendrier. l'attribut days fonctionne bien pendant 24 heures et la fonction fonctionne le 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 __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 
4
répondu Matt Alcock 2013-06-20 18:04:33
la source

Autres questions sur