Funzione Informat (ParseDate) con l'oraCiao,
Ho una domanda sulla funzione Informat (o il suo alias ParseDate). Se ho una stringa con informazioni su data e ora e provo ad analizzare la data su 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);
Ottengo output diversi tipi di output, a seconda delle impostazioni di data e ora (Win 10).
Formato regionale inglese (Regno Unito):
str = "2022-10-22 16:23:37";
Tipo(dataora) = "Data";
datetime = 22Oct2022:16:23:37;
Oppure formato regionale finlandese (Finlandia):
str = "22-10-2022 16:23:37";
Tipo(dataora) = "Numero";
dataora = .;
C'è una funzione che potrebbe analizzare anche il tempo? O ci sono suggerimenti su come farlo?
ScriptingfinestreRe: funzione Informat (ParseDate) con l'oraGrazie, questo esempio funziona per le impostazioni datetime testate.
Re: funzione Informat (ParseDate) con l'oraho usato << Usa Locale() per superare i problemi con i formati di data e ora. L'esempio che hai fornito non ha risolto il problema, penso che ci tornerò più tardi quando avrò tempo (gioco di parole). Il problema con l'esempio è molto probabilmente risolto con << Use Locale().Proverò anche Format Pattern, se ottengo una versione più recente di JMP.
Grazie ancora condividendo le tue conoscenze.
Re: funzione Informat (ParseDate) con l'oraEcco un modo per gestire il problema
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"));
Si vede nel registro
Format(datetime, "m/d/y h:m:s") = "10/22/2022 4:25:37 PM";
Re: funzione Informat (ParseDate) con l'oraControlla se l'uso di << Use Locale () aiuta affatto.
JMP era abbastanza incapace di gestire il tempo (e le date) prima di JMP16. Molto probabilmente analizzerei la stringa in anno, mese, giorno, ora, minuto e secondo. Quindi sommali per ottenere date_time. Con JMP16 molto probabilmente potresti semplicemente usare Format Pattern
Forse questo può dare qualche idea:
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);
Ri: Funzione Informat (ParseDate) con l'oraSembra che in Jmp 15.2 Informat abbia semplicemente ignorato modelli fantasiosi come
datetime= Informat( str, "yyyy-mm-dd HH:mm:ss" );
Anche pattern = "ciao" risulta

Nelle versioni successive, Jmp dirà all'utente:
Formato sconosciuto: ciao
Cosa funziona:
Informazioni con l'opzione Formato modello :
<HH><:><MM> <:><SS> " ); mostra(tipo(dataora)); mostra(dataora);</SS></MM></HH>str="2022-10-22 16:25:37";
datetime= Informat( str, "Format Pattern", "<YYYY><MM></MM></YYYY>