Aide pour un petit algorithme

albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008 - 30 oct. 2004 à 11:50
 Utilisateur anonyme - 30 oct. 2004 à 21:41
Salut all.

voila,je voulais savoir si quelu'un peut me dire comment on fait pour calculer le nombre de Jour entre deux date donné? ( a savoir que j'ai deja fait une fonction qui me retourne les année bisextille et une function qui me retourne le nombre de jour d'un mois donné) ?

en cpp ou vb ou ada, bref peu importe le language, enfet il y a juste le pricipe qui m'interesse

voila :)

d'avance merci!

17 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
30 oct. 2004 à 12:29
Salut,

Utilise :

nbJours = DateDiff("d", date1, date2)

sachant que si date2 < date1 le résultat est négatif.

Cordialement, CanisLupus
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
30 oct. 2004 à 12:29
Pour calculer la différence entre 2 dates tu peux utiliser la méthode DateDiff(Type,Date1,Date2).

"Type" est le format que tu recherche exemple en jour, en mois, ou en semaines, pour jour utilise "d", pour mois : "m", etc...

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
30 oct. 2004 à 12:32
sinon, un simple nbjours = date1 - date2 ça marche aussi.

Cordialement, CanisLupus
0
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008
30 oct. 2004 à 12:37
hmm oui ok,

mais enfet ce que j'aurai aimer c'est LE PRICINPE

et pas une fonction deja faite (datedif..)

:)
0

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

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
30 oct. 2004 à 12:42
il faut convertir les dates en jours, puis ensuite faire le calcul voulus.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
30 oct. 2004 à 12:43
salut

il y a surement d'autre méthode mais j'en vois deux :
- calculer le jour de l'année des deux dates puis soustraction
- calculer la date julienne puis faire la différence

Public Function DiffJours(DatePG As Date, DatePP As Date) As Double
Dim a As Double, b As Double
a = JJ(DatePG)
b = JJ(DatePP)
DiffJours = a - b
End Function

Public Function JJ(Dates As Date)
Dim y As Long, m As Long, DDdd As Double
Dim YYYY As Long, MM As Long
Dim a As Double, b As Double

YYYY = year(dates)
mm = month(dates)
dddd = day(dates)
If MM <2 Then y YYYY - 1: m = MM + 12 Else y = YYYY: m = MM
If Dates >= 1582.1015 Then
a = y \ 100
b = 2 - a + a \ 4
End If

If y = Abs(y) Then
JJ = Int(365.25 * y) + Int(30.6001 * (m + 1)) + DDdd + 1720994.5 + b
Else
JJ = Int(365.25 * y) + Int(30.6001 * (m + 1)) + DDdd + 1720994.5
End If
End Function

Public Function JourAnnée(dat As Date) As Integer
Dim I As Integer
I = Year(dat)If (I Mod 400 0) Or ((I Mod 100 <> 0) And (I Mod 4 0)) Then
JourAnnée = Int((275 * Month(dat)) / 9) - Int((Month(dat) + 9) / 12) + Day(dat) - 30
Else
JourAnnée = Int((275 * Month(dat)) / 9) - (2 * Int((Month(dat) + 9) / 12)) + Day(dat) - 30
End If
End Function

voilà

ShareVB
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
30 oct. 2004 à 12:46
salut

j'ai oublié de dire que ces formules viennent d'un livre d'astronomie pour ordi de Jean Meeus... c'est pas simple mais le principe est là

ShareVB
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 oct. 2004 à 12:46
Le principe c'est de transformer chaque date en quantième par rapport au 01.01.1900 en tenant compte des années bissextiles, c'est ce que fait VB, ensuite il suffit de faire la différence pour obtenir un nombre de jours.

Daniel
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
30 oct. 2004 à 12:58
Bon, je vois pas le prob et pourquoi faire un super algo pour une différence entre 2 dates.
Les dates sont au format Double, donc date1-date2 (ou cdbl(date1)-cdbl(date2)) donne le même résultat à savoir le nombre de jours d'écart.
Les heures, minutes, secondes sont représentées dans la partie décimale.le 30/10/2004 38290 et le 30/12/1899 0 par exemple.

Cordialement, CanisLupus
0
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008
30 oct. 2004 à 17:11
hmm , merci a tous,

ShareVB j ai essayer de comprendre ton code mais je patoge beaucoup...

enfet, c'est pas le code qui m'interesse :(

dison que je code sous ADA et que toute ses fonction qui calcule auto ne sont pas disponible,

tous ce que j'ai, c'est mon cerveau, un fonction qui me dit si anné Bis. et une fonction qui me dit le nombre de jour dans un mois donné..

c'est tout:

donc enfet je voudrai savoir comment On procede pour calculer le nombre de jour par exemple:

nb de jour entre 1 / 05 / 2005 et 3/06/ 2007

merci
0
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008
30 oct. 2004 à 18:12
bon voila j'ai trouvé

moi je voudrai savoir, si il y a aps uen meilleur solution ?

donc:

prenons 2 date

le 1 / 05 / 2005 et le 1 / 6 / 2007

donc je calcule le nombre de jours entres les 2 années

donc 2006 = 365 J

ensuite
le nombre de jours entre le mois de la premiere date et la fin de son anné

donc le 1/06 et le 31/12 = 214 J

Le nombre dejours entre le début de l'année et la date 2
donc entre 01/01 et 31/05 = 151
puis
entre la premiere date et la fin de son mois
1/05 et 31/5 = 30 jours
et etre la deuxieme date et le début de son mois

donc 1 jour..

365 + 151 + 1 +214 = 761

y a t il plus simple??
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
30 oct. 2004 à 18:22
Alors là, albert0, faut que tu demandes aux admins d'ouvrir un espace ADA ou de demander à Mr Google. Ici, c du VB et, en VB, les dates c déjà une prise de tête (comme dans pas mal de langages (même en C)) mais on dispose quand même de fonctions prédéfinies.
Mais, si tu as déjà les fonctions dont tu parles, tu devrais pouvoir t'en sortir tout seul, sinon poste les, peut-être que quelqu'un trouvera la solution.

Bonne prog

Cordialement, CanisLupus
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
30 oct. 2004 à 18:35
Bravo albert0 ! l'ADA est donc aussi primitif ? Te vexe pas, je cheche simplement à comprendre.

Cordialement, CanisLupus
0
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008
30 oct. 2004 à 18:39
j'ai demander une methode, pas de bout de code!!

que tu le fasse en ADA C++ VB CA CHANGE QUE DALLE!!!

je veu pas utiliser de fonction predefinie DONC CA CHANGE RIEN!!
0
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008
30 oct. 2004 à 18:40
et puis quesque ca peut te foutre que j utilise ada?

...?

vb.. c'est pour les gosses dans ce cas la ;)
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
30 oct. 2004 à 19:19
albert0 > ne t'énerve pas. Comme tu dis, j'en n'ai rien à foutre que tu utilses ADA ou un autre langage.
Je répète, je cherche simplement à comprendre.
Personnelllement, le VB, pour moi, c qu'une obligation proffesionnelle, je pref le C. Et l'ADA, je connais qu'en théorie.
Mais tu poses ta question sur un forum dédié à VB. Et, en VB, il existe des fonctions (comme datediff) qui donne en une ligne ce que tu prog en +sieurs lignes et +sieurs fonctions.
Bien sûr qu'on peut aussi pondre des super-algos bien compliqués mais pourquoi réinventer la roue ?
C'est pour ça que je dis que tu t'es trompé de forum.

Cordialement, CanisLupus
0
Utilisateur anonyme
30 oct. 2004 à 21:41
Salut comme disait CanisLupus Date1 - Date2 mais il faut les déclarer dabord
Dim Date1 as date
Dim Date2 as date

NbreDeJours = Date1 - Date2
c'est le plus simple
sinon tu peux aussi connaitre le jour de la semaine

jour = weekday(Date)

7 = Samedi
1 = Dimanche
2 = Lundi
etc...
0
Rejoignez-nous