#1 Mon 17 May 2010 15:36
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Format "français" de date à convertir
Aloha
La plupart du temps, les utilisateurs français (francophones ?) saisissent leurs dates sous la forme jour/mois/année. J'ai donc dans mon jeu de données à traiter des dates du type 30/07/84. Je souhaite les formater avec une année sur quatre chiffres. Mais si je passe cette date dans DateFormater, je vais obtenir 08/07/1984. Comment faire pour lui spécifier que le premier terme est bien le jour ?
D'avance, merci,
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#2 Mon 17 May 2010 16:32
- Sarah - VEREMES
- Participant actif
- Date d'inscription: 21 Apr 2009
- Messages: 51
Re: Format "français" de date à convertir
Bonjour,
Effectivement DateFormater n'aime pas trop le format "français"...
Pour contourner ce problème, on peut utiliser un AttributeSplitter pour découper le champ date par "/", demander à éclater la liste en 3 éléments. Avec StringConcatenator, on peut ainsi reconstruire la date "à l'anglaise" et ensuite passer dans le DateFormater avec %d"/"%m"/"%Y et ça devrait fonctionner...
Sarah MOURE
Veremes : support FME & version française
Hors ligne
#3 Mon 17 May 2010 17:02
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Format "français" de date à convertir
Est-il sinon possible de le faire en Tcl ? J'ai vu qu'il y a des options dans le clock format.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#4 Tue 18 May 2010 06:16
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Format "français" de date à convertir
Bonjour,
Voici un transformer perso qui doit faire ce que tu dis. Il traduit les dates Apic en vraie date.
Dernière modification par pyjoubert (Tue 18 May 2010 06:17)
Hors ligne
#5 Tue 18 May 2010 15:40
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Format "français" de date à convertir
Voilà où j'en suis : j'ai mon fichier excel avec plusieurs dates dans un même champ. Toutes à priori au format français.
J'ai commencé ce code en m'inspirant de la fonction date formatter. Cela me permettrait de traiter toutes les dates du champ puis de les affecter à des attributs.
Mais lorsque j'utilise la fonction "clock scan" pour récupérer le nombre de secondes, il m'indique que le format attendu n'est pas celui rencontré.
Quelqu'un(e) a une idée ?
Code:
proc entrp_ {} { puts "-------------nvel objet---------------" foreach a [FME_AttributeNames] { regsub -all {\n} [FME_GetAttribute $a] "; " b FME_SetAttribute $a $b } #récupération des dates set d_ [FME_GetAttribute "Date déclaration ou autorisation" ] foreach dt_ [regexp -all -inline {[0-9]*/[0-9]*/[0-9]*} $d_ ] { #pour chaque date récupérée regexp -all {([0-9]*)/([0-9]*)/([0-9]*)} $dt_ b b1 b2 b3 #reformater la date au format anglosaxon set b_ $b2 append b_ "/" $b1 "/" $b3 set dateLen [string length $b_] #tester la date pour recréer les années sur 4 chiffres si besoin if {$dateLen > 0} { \ puts "date : $dt_ longueur : $dateLen à transformer : $b_" switch $dateLen { 10 {} #c'est là que cela bloque. Il me dit que le format attendu n'est pas celui rencontré 8 {set s [clock scan {$b_} -format {%m/%d/%y} ] puts $s set tp_ [clock format $s -format {%Y%m%d%H%M%S}] puts $tp } 7 {} default {} } } } }
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne