Et là où je suis vert, ce sont sur les posts anglais: ils font ça avec des virgules. Incorrigibles!
Code : Tout sélectionner
Global Dim Jour.S(6)
Jour(0) = "Lundi"
Jour(1) = "Mardi"
Jour(2) = "Mercredi"
Jour(3) = "Jeudi"
Jour(4) = "Vendredi"
Jour(5) = "Samedi"
Jour(6) = "Dimanche"
Procedure Equ(a, b)
Protected s.L
s = 0: If a = b: s = 1: EndIf
ProcedureReturn s
EndProcedure
; Merci Dobro pour cet algo!
Procedure.L Bissex(x.L)
Protected Result.L
Result = (1 - Equ((x % 100), 0) )
Result | Equ(((x >> 2) % 100), 0)
Result & Equ((x % 4), 0)
ProcedureReturn Result
EndProcedure
Procedure JoursDansUnMois(x.L, y.L)
Protected Result.L
Result = (30 + ((x & 1) ! (x / 8) ) )
Result - (Equ(x, 2) * (2 - y) )
ProcedureReturn Result
EndProcedure
Procedure.L JourJ(JJ.L, MM.L, AA.L)
Protected JPM.L
Protected J.L
J = 0
JPM = 0
For i = 1900 To AA - 1: J + (365 + Bissex(i) ): Next
For i = 1 To MM - 1: J + JoursDansUnMois(i, Bissex(AA) ): Next
J = ((J + JJ) - 1) % 7
ProcedureReturn J
EndProcedure
Date$ = InputRequester("Saisie d'une date", "JJ/MM/AAAA", "01/01/1900")
Debug Jour(JourJ(Val(StringField(Date$, 1, "/") ), Val(StringField(Date$, 2, "/") ), Val(StringField(Date$, 3, "/") ) ) ) + " " + Date$