Bonjour,
Petite question sur les dates :
J'ai 2 dates au format datetime,
je cherche à connaître l'écart entre 2 dates,
MAIS EN NBRE DE MOIS !
Connaissez-vous le truc ? Merci pour vos réponses !
Bonjour,
Petite question sur les dates :
J'ai 2 dates au format datetime,
je cherche à connaître l'écart entre 2 dates,
MAIS EN NBRE DE MOIS !
Connaissez-vous le truc ? Merci pour vos réponses !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 from datetime import datetime #une fonction qui fait ca def diffInMonth(dateD, dateG): ''' Difference entre operande de gauche et celui de droite ''' if(dateD < dateG): print "Erreur : dateD < dateG" exit(0) #Difference entre les annees _retour = (dateD.year - dateG.year)*12 #difference entre les mois _retour += (dateD.month - dateG.month) return _retour #L'algo ici datea = datetime(2008,04,30) dateb = datetime(2007,05,29) #La difference s'obtien en faisant une soustraction le resultat etant une classe deltatime delta = datea - dateb #print print "la difference en jour", delta.days print "la difference en jour/30", delta.days/30 print "la difference en mois en utilisant ma fonction diffInMonth", diffInMonth(datea, dateb )
azalsup--> je vois pas pourquoi tu introduis cette instruction:
sauf que si tu veux faire voir la différence entre le résultat de ta fonction(qui est la plus efficace) et celui de cette instruction.En fait cette dernière, au delà d'une durée de 5 ans(environ), ne renvoie plus le nombre de mois exacte entre deux dates. (vu que les mois de l'année ne se composent pas tous de 30 jours)
Code : Sélectionner tout - Visualiser dans une fenêtre à part print "la difference en jour/30", delta.days/30
Mais tu as bien fait d'écrireet non -- print "la difference en mois" --print "la difference en jour/30"![]()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 #!/usr/bin/env python # coding: Latin-1 -*- class myDate: def __init__(self, y, m, d): self.y=y self.m=m self.d=d def __str__(self): return "%d/%d/%d" % (self.d, self.m, self.y) def bissext(self): return ((self.y % 4) == 0 and (self.y % 100) != 0) or (self.y % 400) == 0 def inc(self): self.d+=1 if self.d < 29: return if self.d == 29 and self.m == 2 and self.bissext(): return if self.d <= 30 and\ (self.m == 4 or self.m == 6 or self.m == 9 or self.m == 11): return if self.d <= 31 and\ (self.m == 1 or self.m == 3 or self.m == 5 or self.m == 7 or self.m == 8 or self.m == 10 or self.m == 12): return self.d=1 if self.m < 12: self.m+=1 else: self.m=1 self.y+=1 def __ne__(self, other): return self.d != other.d or self.m != other.m or self.y != other.y def ecartM(d1, d2): m=0 while d1 != d2: d1.inc() if d1.d == 1: m+=1 #print "%s (%d)" % (d1, m) return m print ecartM(myDate(2004, 12, 02), myDate(2027, 1, 01))
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Partager