Format de saisie pour date
Résolu/Fermé
TéddyChnouki_54
Messages postés
35
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
28 mai 2020
-
22 mai 2018 à 15:33
Utilisateur anonyme - 26 mai 2018 à 20:20
Utilisateur anonyme - 26 mai 2018 à 20:20
A voir également:
- Format de saisie pour date
- Format epub - Guide
- Format dat - Guide
- Telecharger format factory - Télécharger - Conversion & Codecs
- Format apfs - Guide
3 réponses
Utilisateur anonyme
26 mai 2018 à 20:20
26 mai 2018 à 20:20
Bonsoir,
pour l'interpréter, j'ai codé ça vite fait, je ne suis pas sûr que c'est à toute épreuve
Ce qui est sûr c'est que certain textes sans séparateur pouvant être interprétés de plusieurs façons le seront par la 1ere possible selon mon algorithme.
Par exemple 10318 c'est 10/03/2018 est pas 01/03/2018 ni 10/03/0018.
pour l'interpréter, j'ai codé ça vite fait, je ne suis pas sûr que c'est à toute épreuve
Private Function EstCeUneDate(ByVal Texte As String, <System.Runtime.InteropServices.Out()> ByRef LaDate As Date) As Boolean 'on essaye directement d'en faire une date If Date.TryParse(Texte, LaDate) Then Return True End If 'Si ça ne marche pas, on essaye d'interpreter LaDate = Date.MinValue 'il faut une valeur par défaut 'il faut trouver un nombre entre 1 et 31, avec un séparateur ( /\-_) en option, suivi d'un nombre entre 1 et 12, avec le même séparateur en option, suivi de 2 à 4 chiffres 'Pour cela j'utilise une regex http://regexstorm.net/tester?p=%28%3f%3cjour%3e%28%3f%3a3%5b01%5d%29%7c%28%3f%3a%5b12%5d%5cd%29%7c%28%3f%3a0%3f%5b1-9%5d%29%29%28%5b+%2f%5c%5c-_%5d%29%3f%28%3f%3cmoi%3e%28%3f%3a1%5b0-2%5d%29%7c%28%3f%3a0%3f%5b1-9%5d%29%29%5c1%3f%28%3f%3cannee%3e%5cd%7b2%2c4%7d%29&i=12%2f12%2f5678%0d%0a32%2f10%2f5678%0d%0a10318 Dim pattern As String = "^(?<jour>(?:3[01])|(?:[12]\d)|(?:0?[1-9]))([ /\\-_])?(?<moi>(?:1[0-2])|(?:0?[1-9]))\1?(?<annee>\d{2,4})$" Dim m As Match = Regex.Match(Texte, pattern) If m.Success Then 'le modèle est bon, reste à savoir si ça fait une date, le 31 avril n'existe pas, le 29 février ça dépend etc... 'on commence par faire des nombres avec les morceaux de texte Dim jour As Integer = Convert.ToInt32(m.Groups("jour").Value) Dim moi As Integer = Convert.ToInt32(m.Groups("moi").Value) Dim annee As Integer = Convert.ToInt32(m.Groups("annee").Value) 'si l'année est sur 2 chiffres, arbitrairement je choisi que 00 à 29 c'est 2000 à 2029, et 30 à 99, c'est 1930 à 1999 If annee < 30 Then annee += 2000 ElseIf annee < 100 Then annee += 1900 End If 'enfin on essaye d'en faire une date Return Date.TryParse(String.Format("{0}/{1}/{2}", jour, moi, annee),LaDate) End If Return False End Function Private Sub textBox3_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Dim laDate As Date If EstCeUneDate(textBox3.Text, laDate) Then textBox3.Text = laDate.ToShortDateString() 'on affiche la date remise en forme Else MessageBox.Show("Ceci n'est pas une date valide") e.Cancel = True End If End Sub
Ce qui est sûr c'est que certain textes sans séparateur pouvant être interprétés de plusieurs façons le seront par la 1ere possible selon mon algorithme.
Par exemple 10318 c'est 10/03/2018 est pas 01/03/2018 ni 10/03/0018.
garrix_du77
Messages postés
52
Date d'inscription
samedi 21 mai 2016
Statut
Membre
Dernière intervention
4 janvier 2024
2
22 mai 2018 à 17:47
22 mai 2018 à 17:47
tu peut faire le Type = Date normalement
TéddyChnouki_54
Messages postés
35
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
28 mai 2020
25 mai 2018 à 16:13
25 mai 2018 à 16:13
bonjour, ok merci
Utilisateur anonyme
22 mai 2018 à 20:47
22 mai 2018 à 20:47
Bonsoir,
tu peux utiliser un MaskedTextBox.
Mais ce qui est plus "user friendly" c'est d'écrire un interpréteur qui serait reconnaitre que
010118 équivaut à 01012018 équivaut à 01-01-18 etc... et vaut 01/01/2018
tu peux utiliser un MaskedTextBox.
Mais ce qui est plus "user friendly" c'est d'écrire un interpréteur qui serait reconnaitre que
010118 équivaut à 01012018 équivaut à 01-01-18 etc... et vaut 01/01/2018
TéddyChnouki_54
Messages postés
35
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
28 mai 2020
25 mai 2018 à 16:14
25 mai 2018 à 16:14
Bonjour, ok merci, je vais regarder ça ce week-end