Fonction Informat (ParseDate) avec l'heureSalut,
J'ai une question sur la fonction Informat (ou son alias ParseDate). Si j'ai une chaîne avec des informations de date et d'heure et que j'essaie d'analyser la date sur JMP 15.2.0.
str="2022-10-22 16:25:37";
datetime= Informat( str, "yyyy-mm-dd HH:mm:ss" );
show(type(datetime));
show(datetime);
Je reçois différents types de sorties, en fonction des paramètres de date et d'heure (Win 10).
Format régional anglais (Royaume-Uni) :
str = "2022-10-22 16:23:37" ;
Type(dateheure) = "Date" ;
dateheure = 22oct2022:16:23:37 ;
Ou format régional finnois (Finlande) :
str = "2022-10-22 16:23:37" ;
Type(dateheure) = "Numéro" ;
dateheure = .;
Existe-t-il une fonction qui pourrait également analyser le temps? Ou y a-t-il des suggestions sur la façon dont cela pourrait être fait?
Personnalisation de masseles fenêtresRe : Fonction Informat (ParseDate) avec l'heureMerci, cet exemple fonctionne pour les paramètres datetime testés.
Re : Fonction Informat (ParseDate) avec l'heurej'ai utilisé << Utilisez Locale() pour surmonter les problèmes avec les formats de date et d'heure. L'exemple que vous avez fourni n'a pas résolu le problème, je pense que j'y reviendrai plus tard quand j'aurai le temps (jeu de mots). Le problème avec l'exemple est très probablement résolu avec << Use Locale().J'essaierai également Format Pattern, si j'obtiens une version plus récente de JMP.
Merci encore de partager vos connaissances.
Re : Fonction Informat (ParseDate) avec l'heureVoici une façon de gérer le problème
str="2022-10-22 16:25:37";
datetime = datemdy(num(word(2,str," -:")),
num(word(3,str," -:")),
num(word(1,str," -:")) ) +
3600*num(word(4,str," -:")) +
60 * num(word(5,str," -:")) +
num(word(6,str," -:")
);
show(format(datetime,"m/d/y h:m:s"));
Il apparaît dans le journal
Format(datetime, "m/d/y h:m:s") = "10/22/2022 4:25:37 PM";
Re : Fonction Informat (ParseDate) avec l'heureVérifiez si l'utilisation de << Use Locale() aide du tout.
JMP était assez mauvais pour gérer le temps (et les dates) avant JMP16. J'analyserais très probablement la chaîne en année, mois, jour, heure, minute et seconde. Ensuite, additionnez-les pour obtenir date_time. Avec JMP16, vous pouvez très probablement simplement utiliser Format Pattern
Cela peut peut-être donner des idées :
Names Default To Here(1);
str = "2022-10-22 16:25:37";
date = Word(1, str, " ");
time = Word(2, str, " ");
y = Num(Word(1, date, "-"));
m = Num(Word(2, date, "-"));
d = Num(Word(3, date, "-"));
time_separator = Left(Regex(Format(Today(), "h:m:s"), "\d", "", GLOBALREPLACE), 1);
hh = Num(Word(1, time, time_separator));
mm = Num(Word(2, time, time_separator));
ss = Num(Word(3, time, time_separator));
date_time = Date DMY(d, m, y) + hh * 60 * 60 + mm * 60 + ss;
AsDate(date_time);
Re : Fonction Informat (ParseDate) avec l'heureIl semble que dans Jmp 15.2 Informat ait simplement ignoré les modèles sophistiqués comme
datetime= Informat( str, "yyyy-mm-dd HH:mm:ss" );
Même motif = "bonjour" donne

Dans les versions ultérieures, Jmp dira à l'utilisateur :
Format inconnu : bonjour
Ce qui fonctionne:
Informatisez avec l'option Format Pattern :
<HH><:><MM> <:><SS> " ); show(type(datetime)); show(datetime);</SS></MM></HH>str="2022-10-22 16:25:37";
datetime= Informat( str, "Format Pattern", "<YYYY><MM></MM></YYYY>