IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Ecart entre 2 dates (en mois)


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut Ecart entre 2 dates (en mois)
    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 !

  2. #2
    Membre éprouvé
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Par défaut
    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 )

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2008
    Messages : 51
    Par défaut
    azalsup--> je vois pas pourquoi tu introduis cette instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "la difference en jour/30", delta.days/30
    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)
    Mais tu as bien fait d'écrire
    print "la difference en jour/30"
    et non -- print "la difference en mois" --

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tasnim86 Voir le message
    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
    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]

Discussions similaires

  1. Calcul ecart entre 2 dates
    Par Pachina75 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2014, 18h39
  2. Ecart entre 2 date
    Par toss.net dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2010, 10h05
  3. [Toutes versions] Calcul du temps entre 2 dates (ans, mois, jours)
    Par nico84 dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/10/2009, 10h48
  4. Ecart entre 2 dates
    Par Wells dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/10/2007, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo