Bonjour à tous,
je bloque depuis quelques jour et j’ai beau chercher je ne trouve pas la solution.
Je cherche à transformer une Date au format String en Date Formatée Numérique.
Par exemple transformer :
1 février 2021 en 2021/02/01
13 mars 2022 en 2022/03/13
Si quelqu’un peut m’aider sur ce point car là, je suis bloqué.
Je precise que j’arrive bien a extraire la Date String dans une ListBox et que j’arrive à en faire ce que je veux sauf pour la transformation String->Numérique.
Bonjour et merci Jean-Yves pour votre aide.
J’ai deja lu l’aide de l’Api 2 (Api n’est plus utilisée depuis 2019 et j’utilise la version 2022 R1).
Cependant je ne vois pas comment passer mes Strings (voir exemple au debut) pour en sortir ces dates formatées justement.
Vous est til possible de me faire un exemple ?
var frenchlocale as new locale("fr-FR")
var sdate as String = "1 février 2021"
var dtnew as DateTime = DateTime.FromString(sdate, frenchlocale)
var sdatenew as string = dtnew.SQLDate.ReplaceAll("-","/") //2021/02/01
Alors apres test rapide ca fonctionne SAUF quand le nom du mois contient un accent.
A ce moment là l’appli s’arrête mais ne signal rien de particulier.
Y a t il une piste ? Peut etre un probleme de codage (UFT) ou le passage des accents dans la ListBox ?
My guess is the way the accent character or encode is working on your computer. You can see é but it could be one character or a combination of two.
If you can put together a sample and simple app, someone here can take a look and suggest encoding or other method to ‘normalize’ the special characters.
Je pense que c’est la façon dont le caractère accentué ou l’encodage fonctionne sur votre ordinateur. Vous pouvez voir é mais cela pourrait être un caractère ou une combinaison de deux.
Si vous pouvez créer un exemple d’application simple, quelqu’un ici pourra y jeter un coup d’œil et suggérer un encodage ou une autre méthode pour “normaliser” les caractères spéciaux.
remplace le “é” par un “e” avant de faire le date.fromstring
cela permettra de contourner le bug d’accent. (qui ne devrait pas exister je l’accorde…)
après on ne devrait jamais stocker une date en tant que chaine avec les noms des mois
trop compliqué à remettre en forme après
il faut les stocker en tant que sqldate soit YYYY-MM-JJ
c’est independant du pays, et ca se retransforme en tout très facilement.
Merci pour votre aide,
si je remplace le é par un e la date n’est plus au bon format.
Si je passe la date en test avec “1 février 1987” par exemple (avec les " ") ca fonctionne mais moi je vais essayer de traduire des noms de repertoires
Var sDate As String = Trim(Mid(i.Name, iSeparation + 2, i.Name.Length))
'Var sDate As String = “17 février 1971”
Var dtDateNew As DateTime = DateTime.FromString(sDate, frenchLocale)
Quand je regarde dans la fenetre du bas de Xojo, l’in de la date est au bon format pourtant mais des qu’il y a un accent, bim ca bug
Une autre façon que je préfère est l’astronimique “Modified Julian Date”.
Utilisation de décimales - un double (pas un entier) peut se résoudre en milliseconde.
Pour éviter le problème des mois avec accent (février, août, décembre), j’ai utilisé un Select Case et testé “fe”, “ao” et “de”, je crois…
Je lis une date du genre 9 mai 2022 que je transforme en ISO 8601 (AAAA-MM-JJ).
Ceci dit, après avoir ajouté un test (hier, plusieurs mois après que le code original ai été “figé”) sur la date, je me suis rendu compte que ma source (les dates lues) peuvent être bugguées et que mon code original “corrigeait” celà (car le bug était plus loin, genre “féver” - i manquant par exemple -).
On est à l’abri de rien: en voulant sécuriser la lecture de la date, je mets en évidence des bugs…
Oh; et pour une fois que je n’utilisais pas ISO 8601 pour les dates…
PS: ne laissez pas vos utilisateurs libre d’écrire la date à leur guise, ils utiliseront n’importe quoi… points, tiret, etc. de séparation, JJ-MM-AAAA, AAAA-MM-JJ, AAAA-JJ-MM, etc. dans le même document (base de données). Je ne vous racconte pas la m…e (temps perdu) pour standardiser çà.
Vive le trio de PopupMenus (Jour, Mois, Année…) avec des valueurs à choisir dans la liste.