Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WINDEV 7 calcul nbre de mois entre 2 dates

6 réponses
Avatar
Laurent
Sous WINDEV
Je n'arrive pas à calculer le nombre de mois entre deux dates (je n'obtiends
que le nbre de jours).
merci pour vos solutions.

6 réponses

Avatar
SP&B
"Laurent" a écrit dans le message de
news:bo3vvv$pp4$
Sous WINDEV
Je n'arrive pas à calculer le nombre de mois entre deux dates (je


n'obtiends
que le nbre de jours).
merci pour vos solutions.






Bonjour,

Un petit morceau de code pour vous mettre sur la voie :

date1, date2 sont des Dates
eMois est un entier
date1 = DateDuJour()
date2 = date1
date2..Mois = date2..Mois - 5
eMois = date1..Mois - date2..Mois
Info("Il y a " + eMois + " mois de différence entre " + date1 + " et " +
date2)
// Attention ce code ne gère pas le changement d'année

Une autre façon peut être la suivante :

date1 = DateDuJour()
date2 = "20021015"
eMois = DateDifférence(date2, date1)
eMois = eMois / 30
Info(eMois)

La manière complète pour gérer ce genre de différence :
// Ce code permet de calculer l'ancienneté d'un salarié
DateEntree est une Date
DateSortie est une Date
DateSortie = "00000000" // Dans la pratique cette information se trouve dans
le fichier du salarié.
DateEntree = "19990212" // Dans la pratique cette information se trouve dans
le fichier du salarié.
SI DateValide(DateEntree) ALORS
cMois est un réel
cMois = 365.25 / 12
nAnnee est un entier
nMois est un entier
nJour est un entier
nDate est un entier
SI DateValide(DateSortie) ALORS
nDate = DateVersEntier(DateSortie) - DateVersEntier(DateEntree)
SINON
nDate = DateVersEntier(DateSys()) - DateVersEntier(DateEntree)
FIN
nAnnee = PartieEntière(nDate / 365.25)
nMois = PartieEntière((nDate - (nAnnee * 365.25))/cMois)
nJour = PartieEntière(((nDate - (nAnnee * 365.25))) - (nMois * cMois))
Info("Ancienneté : " + nAnnee + " an(s) " + nMois + " mois " + nJour + "
jour(s)")
// Pour n'obtenir que le mois :
Info("Nombre de mois : " + nMois)
SINON
Info( "Date d'entrée inconnue !")
FIN

Sincères salutations.
--
Jean-Claude FLAJOULOT
Sécurité, Pointage & Biométrie

enlever _no.spam pour me contacter en PV.
http://perso.wanadoo.fr/securite.pointage.et.biometrie/
Avatar
SP&B
> // Pour n'obtenir que le mois :
Info("Nombre de mois : " + nMois)
SINON
Info( "Date d'entrée inconnue !")
FIN




Bonjour,

Dans mon post précédent, modifier cette ligne pour avoir :

// Pour n'obtenir que les mois :
Info(nMois + (nAnnee * 12) + " Mois")

Sincères salutations.
--
Jean-Claude FLAJOULOT
Sécurité, Pointage & Biométrie

enlever _no.spam pour me contacter en PV.
http://perso.wanadoo.fr/securite.pointage.et.biometrie/
Avatar
Laurent Imbert
Le hic, c'est veut tu les mois réel ou le nombre de mois possible
Réel : 31 avril au 1 juin donne 3 mois différent
Possible : 31 avril au 1 juin donne 2 2 mois possible


"SP&B" a écrit dans le message de
news:bo44f5$c68$
> // Pour n'obtenir que le mois :
> Info("Nombre de mois : " + nMois)
> SINON
> Info( "Date d'entrée inconnue !")
> FIN
>

Bonjour,

Dans mon post précédent, modifier cette ligne pour avoir :

// Pour n'obtenir que les mois :
Info(nMois + (nAnnee * 12) + " Mois")

Sincères salutations.
--
Jean-Claude FLAJOULOT
Sécurité, Pointage & Biométrie

enlever _no.spam pour me contacter en PV.
http://perso.wanadoo.fr/securite.pointage.et.biometrie/






Avatar
SP&B
"Laurent Imbert" a écrit dans le message de
news:bo5ecf$b63$
Le hic, c'est veut tu les mois réel ou le nombre de mois possible
Réel : 31 avril au 1 juin donne 3 mois différent
Possible : 31 avril au 1 juin donne 2 2 mois possible





Bonjour,
Moi je ne veux rien, vous avez posé une question et j'ai essayé de vous
donner des éléments de réponse avec du code qui fonctionne, à vous de
l'adapter à votre cas, mais cela m'amène à plusieurs remarques concernant
votre réponse :
- 1°/ Je ne connais pas encore de 31 avril, donc date fausse, provoquant une
erreur.
- 2°/ La difference en mois entre le 30 avril et le 1er juin est de un mois
(exactement de 1 mois et 3 jours si l'on prend en dates incluses et si on
voulait être encore plus précis de 1.0841889117043121149897330595483 mois)
et non de 2.2 ou 3.
- 3°/ 2.2 mois n'existe pas vraiment, un mois c'est un mois (soit 30 jours,
ou pour être plus précis l'arrondi de 365.25/12) et la difference en mois
entre deux dates est (en principe) une valeur entière.

Sincères salutations.
--
Jean-Claude FLAJOULOT
Sécurité, Pointage & Biométrie

enlever _no.spam pour me contacter en PV.
http://perso.wanadoo.fr/securite.pointage.et.biometrie/
Avatar
Fabrice Burghgraeve
salut .

"SP&B" a écrit dans le message de
news:bo5l7c$bs1$

"Laurent Imbert" a écrit dans le message de
news:bo5ecf$b63$
> Le hic, c'est veut tu les mois réel ou le nombre de mois possible
> Réel : 31 avril au 1 juin donne 3 mois différent
> Possible : 31 avril au 1 juin donne 2 2 mois possible


(...)
- 2°/ La difference en mois entre le 30 avril et le 1er juin est de un


mois
(exactement de 1 mois et 3 jours si l'on prend en dates incluses et si on
voulait être encore plus précis de 1.0841889117043121149897330595483 mois)
et non de 2.2 ou 3.



Ca depend de ce qu'on appelle un mois, et IMHO, ta definition de 365.25 / 12
jours est la plus juste.

Cela dit, en complement de ta reponse,
si on veut ce que Laurent Imber appelle des "mois reels" (???? en opposition
aux mois fictifs ???), c'est facile.
il suffit de considerer les numeros des mois.
(si c'est pas la meme annee, je laisse deviner le calcul compliqué qui
deduit le nombre de mois pour un certains nombre d'annees ;-) )

- 3°/ 2.2 mois n'existe pas vraiment, un mois c'est un mois (soit 30


jours,
ou pour être plus précis l'arrondi de 365.25/12) et la difference en mois
entre deux dates est (en principe) une valeur entière.



la pas d'accord.
On peut avoir acheté sa voiture il y a deux mois et demi...

De toute facon, la question la plus difficile dans ce probleme, c'est :
c'est quoi un mois ?
(parce que si on compte le nombre de mois en prenant comme unite un mois de
fevrier de 28 jours...Pourtant Fevrier est un mois)

Et la, comme tu dis : <<à vous de l'adapter à votre cas>>


Sincères salutations.
--
Jean-Claude FLAJOULOT


(...)


--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD
Avatar
SP&B
> la pas d'accord.
On peut avoir acheté sa voiture il y a deux mois et demi...




Bonjour,

Oui bien sur, mais il serai plus logique de dire 2 mois et 15 jours. Deux
mois et 15 jours c'est facile (deux mois et demi aussi), mais pour deux mois
et 19 jours ou deux mois et 23 jours, etc... on dit comment ?
Travaillant beaucoup sur des gestions de temps, j'utilise plus féquement des
indications de durée exprimées en années, mois et jours ( 2 ans 11 mois et
27 jours par exemple) que la même duré exprimée de la manière suivante
35,88706365503080082135523613963039 mois.
Je pense que la 1ère version est plus parlante que la 2ième et ne nécessite
pas pour la personne qui lit de faire des calculs pour savoir combien ça
fait exactement, puisque le calcul est déjà fait.
Ne pas oublier non plus que le mois légal en france est de 30 jours, qu'il
fasse réellement 28, 29, 30 ou 31 jours, la donnée de mois légal est à
prendre en compte dans certains types d'applications.

Sincères salutations.
--
Jean-Claude FLAJOULOT
Sécurité, Pointage & Biométrie

enlever _no.spam pour me contacter en PV.
http://perso.wanadoo.fr/securite.pointage.et.biometrie/