Difference entre dates

jaicoute Messages postés 6 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 28 juin 2004 - 23 juin 2004 à 14:57
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 - 23 juin 2004 à 17:47
Bonjour,
et mille excuses à Juvamine mais pour répondre
j'ai une erreur serveur donc impossible !

Je me suis mal exprimé, pour avoir la difference entre 2 dates
non pas en année OU en mois OU en jour mais
en années + mois + jour.
exemple entre le 8 mai 2000 et
le 5 avril 2004
il y a 3 ans 11 mois et 28 jours
comment calculer cela en visual basic ?
Merci, bonne journée;

8 réponses

cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
23 juin 2004 à 15:38
Les règles de calcul pour les années bissextiles sont :
Multiple de 4 -> oui
Sauf si multiple de 100 -> non
Sauf si multiple de 400 -> oui

DateDiff("y", d1, d2) donne le nombre d'années
DateDiff("m", d1, d2) donne le nombre de mois (dont tu retires 12 nb d'années)
DateDiff("d", d1, d2) donne le nombre de jour (dont tu retires 365 par année non bissextile et 366 par année bissextile).

Tu obtiendras 3 valeurs qui sont Année, Mois, Jour
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
23 juin 2004 à 15:43
Va=oila mon ptit gars

Ex : Resultat = Diff(Date1, Date2)

Public Function Diff(D1 As Date, D2 As Date) As String
Dim Annees As Long, Mois As Long, Jours As Long, DecalMois As Long ', Borne As Long
On Error GoTo Erreur:

If D1 > D2 Then
Diff = "Dates invalides."
Exit Function
End If

DecalMois = IIf(Day(D2) < Day(D1), 1, 0)

Annees = Year(D2) - Year(D1) - _
Switch(Month(D2) < Month(D1), 1, _
Month(D2) = Month(D1), DecalMois, _
True, 0)

Mois = (Month(D2) - Month(D1) - DecalMois + 12) Mod 12

Jours = Day(D2) - Day(D1) + _
DecalMois * Day(DateSerial(Year(D2), Month(D2), 1) - 1)

Diff = Trim(IIf(Annees > 0, Annees & " Année" & IIf(Annees > 1, "s", "") & " ", "") & _
IIf(Mois > 0, Mois & " Mois ", "") & _
IIf((Jours > 0) Or (Annees + Mois = 0), Jours & " Jour" & IIf(Jours > 1, "s", ""), "")) & "."

Exit Function
Erreur:
Diff = "Calcul impossible !"
End Function

It@li@
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
23 juin 2004 à 16:47
compliquer en maudit

dim date1 as date
dim date2 as date

date1 = "2004-01-01"
date2 = "2004-02-01"

if format(date1,"yyyy-mm-dd") > format(date2,"yyyy-mm-dd") then
.....
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
23 juin 2004 à 16:51
ah oui j'ai oublier d,ajouter dequoi

dim date1 as date
dim date2 as date
dim date3 as date

date1 = "2004-01-01"
date2 = "2004-02-01"

date3 = date2 - date1

msgbox year(date3) - 1960 & "-" month(date3) & "-" & day(date3)

le 1960, c,est de mémoire, masi il me semble que la valeur minimum est 1960, t'as juste a faire des test sans le " - 1960" pis ensuite ajuster
0

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

Posez votre question
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
23 juin 2004 à 17:08
Déja :

il manque un & avant month(date3)
ensuite c plutot 1900 que 1960

-->MsgBox Year(date3) - 1900 & "-" & Month(date3) & "-" & Day(date3)

It@li@
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
23 juin 2004 à 17:31
ahoui, j,ai taper vite, masi tu accordera ue c,est beaucoup plus simple que ta solution :-)
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
23 juin 2004 à 17:42
ca je te l'accorde mais est-ce que ça fonctionne pour toute les années : bissextiles et non Bissextiles ??

Ca faudrais faire des tests!!

It@li@
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
23 juin 2004 à 17:47
oui aucun problème, windows gère les année bicextile sans problème

puisque date2 - date1, ça donne le nombre de jour
un nombre de jour mis dans une date, ça fabrique une date à comter de 1900

à la limite, faudrais vérifier l'année pour le partir come il faut

annee = year(date1)

date3 = année - 100
date 3 = date3 + date2 - date1

MsgBox Year(date3) - année - 100 & "-" & Month(date3) & "-" & Day(date3)

dequoi du genre
0
Rejoignez-nous