PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Mois entre deux dates
Mois entre deux dates
Débuté par Abbeel Fabian, 22 déc. 2006 12:02 - 5 réponses
Posté le 22 décembre 2006 - 12:02
Bonjour

Je voudrais trouver une solution pour avoir le nombre de mois affichés entre
deux dates !

exemple :

Date_Debut ="20050422"
Date_Fin ="20061204"

// resultat ???
je devrais avoir : 22

Qui peux m'aider a faire cela ?

Merci a tous et surtout de bonnes Fêtes de Noël et Nouvel An

Bon dev
Posté le 22 décembre 2006 - 13:01
Essai avec

datedifférence()

Il suffit de faire quelque recherche dans l'aide !
Posté le 22 décembre 2006 - 13:22
bonjour,

sans doute avez-vous remarqué qu'entre avril 2005 et décembre 2006 : il y a 20 mois et pas 22 mois ( sans ordinateur , on y arrive ! |:-))

ci-dessous une petite fonction qui vous aidera , je l'espère :

// -
PROCEDURE PUBLIQUE GLOBALE gDatesVersNbMois(_dDébut est Date, _dFin est Date)

nNbMois est un entier = Abs(((dFin..Année - dDébut..Année) * 12) + (dFin..Mois - dDébut..Mois))

RENVOYER nNbMois

// - Petit test

dDébut est une date = "20050422"
dFin est une date = "20061204"

info(gDatesVersNbMois(dDébut, dFin)) // Affiche : 20


// maintenant avec dDébut = "20070101"
la fonction retourne 1 et non pas -1 car dDébut est postérieure à dFin

c'est l'intérêt d'utiliser la fonction WL.Abs() pour renvoyer un entier positif (ou 0)

bon dev.
JM
Posté le 22 décembre 2006 - 15:04
Datediffenrece donne la difference en jours en pas en mois c'est pas une
différence que je veux mais un total en mois !

"Chris" <cbeziau13@orange.fr> a écrit dans le message de news:
458bb92d$1@news.pcsoft.fr...

Essai avec

datedifférence()

Il suffit de faire quelque recherche dans l'aide !

Posté le 22 décembre 2006 - 15:04
Merci pour ce code !

Mais ma question est bien possé le nombre de mois affichés !
donc dans ma question il y en a bien 22
1 = Avril 05 et 22 decembre 2006

Merci





"Joaquim MEDA" <j.meda@wanadoo.fr> a écrit dans le message de news:
458bbbfe$1@news.pcsoft.fr...

bonjour,

sans doute avez-vous remarqué qu'entre avril 2005 et décembre 2006 : il y
a 20 mois et pas 22 mois ( sans ordinateur , on y arrive ! |:-))

ci-dessous une petite fonction qui vous aidera , je l'espère :

// -
PROCEDURE PUBLIQUE GLOBALE gDatesVersNbMois(_dDébut est Date, _dFin est
Date)

nNbMois est un entier = Abs(((dFin..Année - dDébut..Année) * 12) +
(dFin..Mois - dDébut..Mois))

RENVOYER nNbMois

// - Petit test

dDébut est une date = "20050422"
dFin est une date = "20061204"

info(gDatesVersNbMois(dDébut, dFin)) // Affiche : 20


// maintenant avec dDébut = "20070101"
la fonction retourne 1 et non pas -1 car dDébut est postérieure à dFin

c'est l'intérêt d'utiliser la fonction WL.Abs() pour renvoyer un entier
positif (ou 0)

bon dev.
JM




Posté le 22 décembre 2006 - 20:50
Vous demandiez "mois ENTRE deux dates" ...
C'est comme les problèmes d'intervalles ouverts ou fermés : dans votre cas rajoutez 2 à la fin de la solution (juste) qui vous est donnée.