Convertir nombre de jours en année, mois et jours

Résolu
mehdiyou
Messages postés
14
Date d'inscription
dimanche 5 novembre 2006
Statut
Membre
Dernière intervention
1 mai 2008
- 30 avril 2008 à 17:55
Whismeril
Messages postés
17474
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
- 22 juin 2018 à 08:06
salut tout le monde y'aurai t il quelqu'un qui pourrait me donner une fonction qui permet de convertir un nombre de jours en année,mois et jour.(Exp: 376 jours= 1an et 11 jours). en fait je voudrai calculer l'âge d'une personne (c'est à dire soustraction entre 2 date) .J'ai fait
diff = DtR.Subtract(Me.CC._Dtt.Rows(i).Item(4))


mais j'aurai la diffèrence en nombre de jours c'est à dire âge=5376 jours au lieu de 14 ans et ......

8 réponses

cs_Exploreur
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
30 avril 2008 à 19:17
Salut,

Je ne sais pas s'il existe un fonction toute faite en .net mais déjà tu peux regarder cela : ici

En faite faut faire le contraire.....

A+
Exploreur

 Linux a un noyau, Windows un pépin
3
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
30 avril 2008 à 21:23
S'il existe une chose qui ne peut être transformée en une autre, c'est bien le nombre de jours en années, mois et jours !

La notion d'année et de mois est en effet calandaire et pas linéaire.

ainsi 28 jours peuvent faire un mois ici et 28 jours seulement là ...
31 jours peuvent faire un mois et 3 jours ou un mois (selon le cas de figure) !
3
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
30 avril 2008 à 21:26
La notion d'âge (ou de durée) est autre chose et le calcul ne se fait pas à partir d'un nombre de jours, mais de deux dates (une de début et l'autre de fin).
3
mehdiyou
Messages postés
14
Date d'inscription
dimanche 5 novembre 2006
Statut
Membre
Dernière intervention
1 mai 2008

30 avril 2008 à 21:36
oui jmfmarques. le nombre de jours comme tu me l'as dit a été calcué à partir d'une diffèrence entre 2 dates (date Début et Date Fin) donc j'ai voulu convertir ce résultat en x année, y mois, z jours
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
30 avril 2008 à 21:53
Et non !

C'est précisément ce qu'il faut éviter ! (calculer le nombre de jours puis tenter de convertir ...) ! Non !

Fais une recherche sur ce forum avec le mot âge ...
3
cs_christoni
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
7
1 mai 2008 à 01:05
Bonjour,
jmfmarques l'a fait pour des heures, minutes ...
Voici son code appliquer à ton problème et qui devrait fonctionner :

    Function ConvertisseurAnnMoisJour(ByVal maDureeJour As Integer) As Integer
        Dim nbAns As Integer
        Dim nbMois As Integer
        Dim nbJours As Integer

        '\, opérateur : Effectue la division de deux nombres et retourne le résultat sous forme d'entier.
        'Mod, opérateur (Visual Basic) : Effectue la division de deux nombres et retourne seulement le reste.
        nbAns = maDureeJour \ 365.25
        nbMois = (maDureeJour Mod 365.25) \ 30.4375
        nbJours = (maDureeJour Mod 365.25) Mod 30.4375

        'Pour tester, à adapter bien sûr.
        Return MsgBox(nbAns & " années " & nbMois & " mois " & nbJours & " jours ")
    End Function

5376 me donne 14 ans 8 mois et 19 jours, l'âge de ta personne.
Bonne continuation.
3
ce code m a aussi été utille..merci
0
Whismeril
Messages postés
17474
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
600 > casio
22 juin 2018 à 08:06
Bonjour casio.
Sauf que ce calcul est faux, comme l’a ecrit jmfmarques, que je salue au passage, il n’y a pas 30,4375 jours par moi, mais 28, 29, 30 ou 31.
Il y a donc des cas ou ce calcul donnera un résultat inexact.
La bonne méthode est de cacluler avec les dates.
0
mehdiyou
Messages postés
14
Date d'inscription
dimanche 5 novembre 2006
Statut
Membre
Dernière intervention
1 mai 2008

1 mai 2008 à 14:52
Merci beauuuuuucoup christoni. c'est exactement ce que je cherchais. Merci
0
FouBasic
Messages postés
10
Date d'inscription
samedi 23 août 2003
Statut
Membre
Dernière intervention
31 décembre 2008

31 déc. 2008 à 20:15
Hmmm ....
Suite de teste, c'est presque vrai, mais c'est plutot cela je crois qui est plus précis....


        nbAns = maDureeJour \ 365.25
        nbmois2 = Abs(nbAns - (maDureeJour / 365.25))
        nbMois = Int(nbmois2 * 12)
        nbJours = Int(Abs(nbMois - (nbmois2 * 12)) * 365.25)


        Resutldata = (nbAns & " années " & nbMois & " mois " & nbJours & " jours ")
        ConvertisseurAnnMoisJour = Resutldata

A vous de vérifier...

Elie
0