Bonjour,
Je voudrais savoir s'il existe en VB une s=E9quence relativement
permettant de d=E9terminer si =E0 une date (par exemple 9/05/1658)
correspond un lundi, mardi, ...
Merci de votre r=E9ponse
Bonne journ=E9e
Michel
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-marc
wrote:
Bonjour, Je voudrais savoir s'il existe en VB une séquence relativement permettant de déterminer si à une date (par exemple 9/05/1658) correspond un lundi, mardi, ... Merci de votre réponse Bonne journée Michel
Hello,
la fonction WeekDay est faite pour cela.
Par exemple pour aujourd'hui: ? weekday("09/05/2008",vbMonday) 5
La réponse est 5, qui est bien le 5eme jour de la semaine avec le lundi pris comme premier jour (spécifié par le 2eme argument, "vbMonday).
Pour les fonctions de manipulation de dates, on peut consulter ces 2 articles de la FAQ:
Bonjour,
Je voudrais savoir s'il existe en VB une séquence relativement
permettant de déterminer si à une date (par exemple 9/05/1658)
correspond un lundi, mardi, ...
Merci de votre réponse
Bonne journée
Michel
Hello,
la fonction WeekDay est faite pour cela.
Par exemple pour aujourd'hui:
? weekday("09/05/2008",vbMonday)
5
La réponse est 5, qui est bien le 5eme jour de la semaine avec
le lundi pris comme premier jour (spécifié par le 2eme argument,
"vbMonday).
Pour les fonctions de manipulation de dates, on peut consulter
ces 2 articles de la FAQ:
Bonjour, Je voudrais savoir s'il existe en VB une séquence relativement permettant de déterminer si à une date (par exemple 9/05/1658) correspond un lundi, mardi, ... Merci de votre réponse Bonne journée Michel
Hello,
la fonction WeekDay est faite pour cela.
Par exemple pour aujourd'hui: ? weekday("09/05/2008",vbMonday) 5
La réponse est 5, qui est bien le 5eme jour de la semaine avec le lundi pris comme premier jour (spécifié par le 2eme argument, "vbMonday).
Pour les fonctions de manipulation de dates, on peut consulter ces 2 articles de la FAQ:
L'intérêt est que le texte retourné sera d'office dans la langue d'installation de l'OS (vendredi chez moi (Windows francophone), mais "friday" sur ma machine du boulot (Windows US).
L'intérêt est que le texte retourné sera d'office dans la langue
d'installation de l'OS (vendredi chez moi (Windows francophone),
mais "friday" sur ma machine du boulot (Windows US).
L'intérêt est que le texte retourné sera d'office dans la langue d'installation de l'OS (vendredi chez moi (Windows francophone), mais "friday" sur ma machine du boulot (Windows US).
Bonjour, Je voudrais savoir s'il existe en VB une séquence relativement permettant de déterminer si à une date (par exemple 9/05/1658) correspond un lundi, mardi, ... Merci de votre réponse
En une fonction bien propre:
Public Function MyWeekDayName(ByVal aDate As Variant, _ Optional ByVal abbreviate As Boolean = False) As String
If IsDate(aDate) Then MyWeekDayName = WeekdayName(Weekday(CDate(aDate), vbMonday), _ abbreviate, vbMonday) End If
End Function
Et un exemple d'appel :
Dim s As String Dim dwFull As String
s = Text1.Text dwFull = MyWeekDayName(s)
If dwFull <> "" Then MsgBox "le " & s & " est un " & dwFull & "." End If
Bonjour,
Je voudrais savoir s'il existe en VB une séquence relativement
permettant de déterminer si à une date (par exemple 9/05/1658)
correspond un lundi, mardi, ...
Merci de votre réponse
En une fonction bien propre:
Public Function MyWeekDayName(ByVal aDate As Variant, _
Optional ByVal abbreviate As Boolean = False)
As String
If IsDate(aDate) Then
MyWeekDayName = WeekdayName(Weekday(CDate(aDate), vbMonday), _
abbreviate, vbMonday)
End If
End Function
Et un exemple d'appel :
Dim s As String
Dim dwFull As String
s = Text1.Text
dwFull = MyWeekDayName(s)
If dwFull <> "" Then
MsgBox "le " & s & " est un " & dwFull & "."
End If
Bonjour, Je voudrais savoir s'il existe en VB une séquence relativement permettant de déterminer si à une date (par exemple 9/05/1658) correspond un lundi, mardi, ... Merci de votre réponse
En une fonction bien propre:
Public Function MyWeekDayName(ByVal aDate As Variant, _ Optional ByVal abbreviate As Boolean = False) As String
If IsDate(aDate) Then MyWeekDayName = WeekdayName(Weekday(CDate(aDate), vbMonday), _ abbreviate, vbMonday) End If
End Function
Et un exemple d'appel :
Dim s As String Dim dwFull As String
s = Text1.Text dwFull = MyWeekDayName(s)
If dwFull <> "" Then MsgBox "le " & s & " est un " & dwFull & "." End If
Bonjour, Je voudrais savoir s'il existe en VB une séquence relativement permettant de déterminer si à une date (par exemple 9/05/1658) correspond un lundi, mardi, ... Merci de votre réponse
En une fonction bien propre:
Public Function MyWeekDayName(ByVal aDate As Variant, _ Optional ByVal abbreviate As Boolean = False) As String
If IsDate(aDate) Then MyWeekDayName = WeekdayName(Weekday(CDate(aDate), vbMonday), _ abbreviate, vbMonday) End If
End Function
Et un exemple d'appel :
Dim s As String Dim dwFull As String
s = Text1.Text dwFull = MyWeekDayName(s)
If dwFull <> "" Then MsgBox "le " & s & " est un " & dwFull & "." End If
je ne suis pas sûr que weekday fonctionne pour l'année 1658.
Voici ce que j'utilise
'L'entrée dans la fonction JourSemaineDate se fera uniquement sous la forme d'une date 'Au retour la valeur sera un mot représentant le nom du jour 'JourSemaineDate("21/03/2008") renvoie "vendredi"
Public Function JourSemaineDate(ByVal S As String) As String JourSemaineDate = JourSemaineJulien(JourJulien(S)) End Function
'Renvoie le jour de la semaine 'l'entrée se fait sous la forme d'un jour julien (un double) Public Function JourSemaineJulien(ByVal JJ As Double) As String Dim N As Long 'calcul du modulo quel que soit JJ
N = Modulo(Round(JJ + 1.5), 7) Select Case N Case 0 JourSemaineJulien = "dimanche" Case 1 JourSemaineJulien = "lundi" Case 2 JourSemaineJulien = "mardi" Case 3 JourSemaineJulien = "mercredi" Case 4 JourSemaineJulien = "jeudi" Case 5 JourSemaineJulien = "vendredi" Case 6 JourSemaineJulien = "samedi" End Select End Function
'L'entrée dans la fonction JourJulien se fera obligatoirement sous l'une des trois formes suivantes '"05/03/2001" dans ce cas la date considérée sera "05/03/2001 à 0h00" '"05/03/2001 à 9h" dans ce cas la date considérée sera "05/03/2001 à 09h00" '"05/03/2001 à 9h32" dans ce cas la date considérée sera "05/03/2001 à 09h32"
'Au retour la valeur sera un double avec deux décimales
Public Function JourJulien(ByVal S As String) As Double Dim N As Long, jour As Long, Gauche As String, Droite As String, mois As Long, Annee As Double Dim Heure As Long, Minute As Long, p As Double, M As Long, Y As Double, JJ As Double, a As Long, b As Long Dim D As Double If InStr(S, " à ") = 0 Then S = S & " à 0h00" S = Replace(S, "H", "h") 'Détermination du Jour Droite = S Gauche = Left$(Droite, 2) If IsNumeric(Gauche) Then jour = CLng(Gauche) Droite = Mid$(Droite, 4) Else MsgBox "Erreur sur le jour pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If 'Détermination du mois Gauche = Left$(Droite, 2) If IsNumeric(Gauche) Then mois = CLng(Gauche) Droite = Mid$(Droite, 4) Else MsgBox "Erreur sur le mois pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If 'détermination de l'année N = InStr(Droite, " à ") Select Case N Case 0 Gauche = Droite Droite = "12h00" Case 1 Gauche = Droite Case Else Gauche = Left$(Droite, N - 1) Droite = Mid$(Droite, N + 3) End Select If IsNumeric(Gauche) Then Annee = CDbl(Gauche) Else MsgBox "Erreur sur l'année pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If 'détermination de Heure et Minute N = InStr(Droite, "h") If (N < 2) Or (N = Len(Droite) - 1) Then MsgBox "Erreur sur l'horaire pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If If N = Len(Droite) Then Droite = Droite & "00" Gauche = Left$(Droite, N - 1) Droite = Mid$(Droite, N + 1) If IsNumeric(Gauche) Then Heure = CLng(Gauche) Else MsgBox "Erreur sur l'heure pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If If IsNumeric(Droite) Then Minute = CLng(Droite) Else Minute = 0 'MsgBox "Erreur sur les minutes pour " & S & vbCrLf & "JourJulien vaut 0" 'JourJulien = 0 'Exit Function End If 'Transformation du jour, heure seconde en pourcentage p = jour + Round(Heure / 24 + Minute / 1440, 5)
'Rectification de l'année 0 If Annee < 1 Then Y = Annee + 1 Else Y = Annee
'Calcul de m M = mois If mois < 3 Then Y = Y - 1 M = mois + 12 End If 'Détermination de JJ If Y > 0 Then JJ = Fix(365.25 * Y) + Fix(30.6001 * (M + 1)) + p + 1720994.5 Else JJ = Fix(365.25 * Y - 0.75) + Fix(30.6001 * (M + 1)) + p + 1720994.5 End If 'Calcul de A et B If IsGregorien(Annee, mois, jour) Then a = Fix(Y / 100) b = 2 - a + Fix(a / 4) JJ = JJ + b End If JourJulien = JJ End Function
'cette fonction généralise la fonction Modulo Private Function Modulo(ByVal S As String, ByVal Div As Integer) As Long Dim Nombre As String, N As Long, Negatif As Boolean Dim DixModuloDiv As Long, Chiffres As String, resultat As Long
Negatif = InStr(S, "-") > 0 If Negatif Then Nombre = Mid$(S, 2) Else Nombre = S DixModuloDiv = 10 Mod Div resultat = 0 For N = 1 To Len(Nombre) resultat = (DixModuloDiv * resultat + CLng(Mid$(Nombre, N, 1))) Mod Div Next N If Negatif And (resultat > 0) Then resultat = Div - resultat Modulo = resultat End Function
Cette fonction marche pour toutes dates y compris avant la réforme grégorienne, y compris avce le sdates négatives, pas d'année 0. Si les dates est erronées, le jour renvoyé est celui de la dae si le jour existait. Ainsi le 30 avril 2008 est un mercredi alors le 35 avril 2008 serait un lundi (5 mai 2008) La date est impérativement entré sous la forme d'un string JJ/MM/année 05/12/-325 est une date valide mais pas 5/12/-325
Jean-marc a écrit :
michel.arnoux@gmail.com wrote:
Bonjour,
Je voudrais savoir s'il existe en VB une séquence relativement
permettant de déterminer si à une date (par exemple 9/05/1658)
correspond un lundi, mardi, ...
Merci de votre réponse
En une fonction bien propre:
Public Function MyWeekDayName(ByVal aDate As Variant, _
Optional ByVal abbreviate As Boolean = False)
As String
If IsDate(aDate) Then
MyWeekDayName = WeekdayName(Weekday(CDate(aDate), vbMonday), _
abbreviate, vbMonday)
End If
End Function
Et un exemple d'appel :
Dim s As String
Dim dwFull As String
s = Text1.Text
dwFull = MyWeekDayName(s)
If dwFull <> "" Then
MsgBox "le " & s & " est un " & dwFull & "."
End If
je ne suis pas sûr que weekday fonctionne pour l'année 1658.
Voici ce que j'utilise
'L'entrée dans la fonction JourSemaineDate se fera uniquement sous la
forme d'une date
'Au retour la valeur sera un mot représentant le nom du jour
'JourSemaineDate("21/03/2008") renvoie "vendredi"
Public Function JourSemaineDate(ByVal S As String) As String
JourSemaineDate = JourSemaineJulien(JourJulien(S))
End Function
'Renvoie le jour de la semaine
'l'entrée se fait sous la forme d'un jour julien (un double)
Public Function JourSemaineJulien(ByVal JJ As Double) As String
Dim N As Long
'calcul du modulo quel que soit JJ
N = Modulo(Round(JJ + 1.5), 7)
Select Case N
Case 0
JourSemaineJulien = "dimanche"
Case 1
JourSemaineJulien = "lundi"
Case 2
JourSemaineJulien = "mardi"
Case 3
JourSemaineJulien = "mercredi"
Case 4
JourSemaineJulien = "jeudi"
Case 5
JourSemaineJulien = "vendredi"
Case 6
JourSemaineJulien = "samedi"
End Select
End Function
'L'entrée dans la fonction JourJulien se fera obligatoirement sous l'une
des trois formes suivantes
'"05/03/2001" dans ce cas la date considérée sera "05/03/2001 à 0h00"
'"05/03/2001 à 9h" dans ce cas la date considérée sera "05/03/2001 à 09h00"
'"05/03/2001 à 9h32" dans ce cas la date considérée sera "05/03/2001 à
09h32"
'Au retour la valeur sera un double avec deux décimales
Public Function JourJulien(ByVal S As String) As Double
Dim N As Long, jour As Long, Gauche As String, Droite As String,
mois As Long, Annee As Double
Dim Heure As Long, Minute As Long, p As Double, M As Long, Y As
Double, JJ As Double, a As Long, b As Long
Dim D As Double
If InStr(S, " à ") = 0 Then S = S & " à 0h00"
S = Replace(S, "H", "h")
'Détermination du Jour
Droite = S
Gauche = Left$(Droite, 2)
If IsNumeric(Gauche) Then
jour = CLng(Gauche)
Droite = Mid$(Droite, 4)
Else
MsgBox "Erreur sur le jour pour " & S & vbCrLf &
"JourJulien vaut 0"
JourJulien = 0
Exit Function
End If
'Détermination du mois
Gauche = Left$(Droite, 2)
If IsNumeric(Gauche) Then
mois = CLng(Gauche)
Droite = Mid$(Droite, 4)
Else
MsgBox "Erreur sur le mois pour " & S & vbCrLf &
"JourJulien vaut 0"
JourJulien = 0
Exit Function
End If
'détermination de l'année
N = InStr(Droite, " à ")
Select Case N
Case 0
Gauche = Droite
Droite = "12h00"
Case 1
Gauche = Droite
Case Else
Gauche = Left$(Droite, N - 1)
Droite = Mid$(Droite, N + 3)
End Select
If IsNumeric(Gauche) Then
Annee = CDbl(Gauche)
Else
MsgBox "Erreur sur l'année pour " & S & vbCrLf &
"JourJulien vaut 0"
JourJulien = 0
Exit Function
End If
'détermination de Heure et Minute
N = InStr(Droite, "h")
If (N < 2) Or (N = Len(Droite) - 1) Then
MsgBox "Erreur sur l'horaire pour " & S & vbCrLf &
"JourJulien vaut 0"
JourJulien = 0
Exit Function
End If
If N = Len(Droite) Then Droite = Droite & "00"
Gauche = Left$(Droite, N - 1)
Droite = Mid$(Droite, N + 1)
If IsNumeric(Gauche) Then
Heure = CLng(Gauche)
Else
MsgBox "Erreur sur l'heure pour " & S & vbCrLf &
"JourJulien vaut 0"
JourJulien = 0
Exit Function
End If
If IsNumeric(Droite) Then
Minute = CLng(Droite)
Else
Minute = 0
'MsgBox "Erreur sur les minutes pour " & S & vbCrLf &
"JourJulien vaut 0"
'JourJulien = 0
'Exit Function
End If
'Transformation du jour, heure seconde en pourcentage
p = jour + Round(Heure / 24 + Minute / 1440, 5)
'Rectification de l'année 0
If Annee < 1 Then Y = Annee + 1 Else Y = Annee
'Calcul de m
M = mois
If mois < 3 Then
Y = Y - 1
M = mois + 12
End If
'Détermination de JJ
If Y > 0 Then
JJ = Fix(365.25 * Y) + Fix(30.6001 * (M + 1)) + p + 1720994.5
Else
JJ = Fix(365.25 * Y - 0.75) + Fix(30.6001 * (M + 1)) + p +
1720994.5
End If
'Calcul de A et B
If IsGregorien(Annee, mois, jour) Then
a = Fix(Y / 100)
b = 2 - a + Fix(a / 4)
JJ = JJ + b
End If
JourJulien = JJ
End Function
'cette fonction généralise la fonction Modulo
Private Function Modulo(ByVal S As String, ByVal Div As Integer) As Long
Dim Nombre As String, N As Long, Negatif As Boolean
Dim DixModuloDiv As Long, Chiffres As String, resultat As Long
Negatif = InStr(S, "-") > 0
If Negatif Then Nombre = Mid$(S, 2) Else Nombre = S
DixModuloDiv = 10 Mod Div
resultat = 0
For N = 1 To Len(Nombre)
resultat = (DixModuloDiv * resultat + CLng(Mid$(Nombre, N, 1)))
Mod Div
Next N
If Negatif And (resultat > 0) Then resultat = Div - resultat
Modulo = resultat
End Function
Cette fonction marche pour toutes dates y compris avant la réforme
grégorienne, y compris avce le sdates négatives, pas d'année 0.
Si les dates est erronées, le jour renvoyé est celui de la dae si le
jour existait.
Ainsi le 30 avril 2008 est un mercredi alors le 35 avril 2008 serait un
lundi (5 mai 2008)
La date est impérativement entré sous la forme d'un string JJ/MM/année
05/12/-325 est une date valide mais pas 5/12/-325
Bonjour, Je voudrais savoir s'il existe en VB une séquence relativement permettant de déterminer si à une date (par exemple 9/05/1658) correspond un lundi, mardi, ... Merci de votre réponse
En une fonction bien propre:
Public Function MyWeekDayName(ByVal aDate As Variant, _ Optional ByVal abbreviate As Boolean = False) As String
If IsDate(aDate) Then MyWeekDayName = WeekdayName(Weekday(CDate(aDate), vbMonday), _ abbreviate, vbMonday) End If
End Function
Et un exemple d'appel :
Dim s As String Dim dwFull As String
s = Text1.Text dwFull = MyWeekDayName(s)
If dwFull <> "" Then MsgBox "le " & s & " est un " & dwFull & "." End If
je ne suis pas sûr que weekday fonctionne pour l'année 1658.
Voici ce que j'utilise
'L'entrée dans la fonction JourSemaineDate se fera uniquement sous la forme d'une date 'Au retour la valeur sera un mot représentant le nom du jour 'JourSemaineDate("21/03/2008") renvoie "vendredi"
Public Function JourSemaineDate(ByVal S As String) As String JourSemaineDate = JourSemaineJulien(JourJulien(S)) End Function
'Renvoie le jour de la semaine 'l'entrée se fait sous la forme d'un jour julien (un double) Public Function JourSemaineJulien(ByVal JJ As Double) As String Dim N As Long 'calcul du modulo quel que soit JJ
N = Modulo(Round(JJ + 1.5), 7) Select Case N Case 0 JourSemaineJulien = "dimanche" Case 1 JourSemaineJulien = "lundi" Case 2 JourSemaineJulien = "mardi" Case 3 JourSemaineJulien = "mercredi" Case 4 JourSemaineJulien = "jeudi" Case 5 JourSemaineJulien = "vendredi" Case 6 JourSemaineJulien = "samedi" End Select End Function
'L'entrée dans la fonction JourJulien se fera obligatoirement sous l'une des trois formes suivantes '"05/03/2001" dans ce cas la date considérée sera "05/03/2001 à 0h00" '"05/03/2001 à 9h" dans ce cas la date considérée sera "05/03/2001 à 09h00" '"05/03/2001 à 9h32" dans ce cas la date considérée sera "05/03/2001 à 09h32"
'Au retour la valeur sera un double avec deux décimales
Public Function JourJulien(ByVal S As String) As Double Dim N As Long, jour As Long, Gauche As String, Droite As String, mois As Long, Annee As Double Dim Heure As Long, Minute As Long, p As Double, M As Long, Y As Double, JJ As Double, a As Long, b As Long Dim D As Double If InStr(S, " à ") = 0 Then S = S & " à 0h00" S = Replace(S, "H", "h") 'Détermination du Jour Droite = S Gauche = Left$(Droite, 2) If IsNumeric(Gauche) Then jour = CLng(Gauche) Droite = Mid$(Droite, 4) Else MsgBox "Erreur sur le jour pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If 'Détermination du mois Gauche = Left$(Droite, 2) If IsNumeric(Gauche) Then mois = CLng(Gauche) Droite = Mid$(Droite, 4) Else MsgBox "Erreur sur le mois pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If 'détermination de l'année N = InStr(Droite, " à ") Select Case N Case 0 Gauche = Droite Droite = "12h00" Case 1 Gauche = Droite Case Else Gauche = Left$(Droite, N - 1) Droite = Mid$(Droite, N + 3) End Select If IsNumeric(Gauche) Then Annee = CDbl(Gauche) Else MsgBox "Erreur sur l'année pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If 'détermination de Heure et Minute N = InStr(Droite, "h") If (N < 2) Or (N = Len(Droite) - 1) Then MsgBox "Erreur sur l'horaire pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If If N = Len(Droite) Then Droite = Droite & "00" Gauche = Left$(Droite, N - 1) Droite = Mid$(Droite, N + 1) If IsNumeric(Gauche) Then Heure = CLng(Gauche) Else MsgBox "Erreur sur l'heure pour " & S & vbCrLf & "JourJulien vaut 0" JourJulien = 0 Exit Function End If If IsNumeric(Droite) Then Minute = CLng(Droite) Else Minute = 0 'MsgBox "Erreur sur les minutes pour " & S & vbCrLf & "JourJulien vaut 0" 'JourJulien = 0 'Exit Function End If 'Transformation du jour, heure seconde en pourcentage p = jour + Round(Heure / 24 + Minute / 1440, 5)
'Rectification de l'année 0 If Annee < 1 Then Y = Annee + 1 Else Y = Annee
'Calcul de m M = mois If mois < 3 Then Y = Y - 1 M = mois + 12 End If 'Détermination de JJ If Y > 0 Then JJ = Fix(365.25 * Y) + Fix(30.6001 * (M + 1)) + p + 1720994.5 Else JJ = Fix(365.25 * Y - 0.75) + Fix(30.6001 * (M + 1)) + p + 1720994.5 End If 'Calcul de A et B If IsGregorien(Annee, mois, jour) Then a = Fix(Y / 100) b = 2 - a + Fix(a / 4) JJ = JJ + b End If JourJulien = JJ End Function
'cette fonction généralise la fonction Modulo Private Function Modulo(ByVal S As String, ByVal Div As Integer) As Long Dim Nombre As String, N As Long, Negatif As Boolean Dim DixModuloDiv As Long, Chiffres As String, resultat As Long
Negatif = InStr(S, "-") > 0 If Negatif Then Nombre = Mid$(S, 2) Else Nombre = S DixModuloDiv = 10 Mod Div resultat = 0 For N = 1 To Len(Nombre) resultat = (DixModuloDiv * resultat + CLng(Mid$(Nombre, N, 1))) Mod Div Next N If Negatif And (resultat > 0) Then resultat = Div - resultat Modulo = resultat End Function
Cette fonction marche pour toutes dates y compris avant la réforme grégorienne, y compris avce le sdates négatives, pas d'année 0. Si les dates est erronées, le jour renvoyé est celui de la dae si le jour existait. Ainsi le 30 avril 2008 est un mercredi alors le 35 avril 2008 serait un lundi (5 mai 2008) La date est impérativement entré sous la forme d'un string JJ/MM/année 05/12/-325 est une date valide mais pas 5/12/-325