Informat (ParseDate)-Funktion mit ZeitHallo,
Ich habe eine Frage zur Informat-Funktion (oder ihrem Alias ParseDate). Wenn ich eine Zeichenfolge mit Datums- und Uhrzeitinformationen habe und versuche, das Datum in JMP 15.2.0 zu analysieren.
str="2022-10-22 16:25:37";
datetime= Informat( str, "yyyy-mm-dd HH:mm:ss" );
show(type(datetime));
show(datetime);
Abhängig von den Datums-/Uhrzeiteinstellungen (Win 10) erhalte ich unterschiedliche Ausgabearten.
Regionalformat Englisch (Vereinigtes Königreich):
str = "2022-10-22 16:23:37";
Type(datetime) = "Datum";
datetime = 22Oct2022:16:23:37;
Oder Regionalformat Finnisch (Finnland):
str = "2022-10-22 16:23:37";
Type(datetime) = "Number";
datetime = .;
Gibt es eine Funktion, die auch die Zeit analysieren kann? Oder gibt es Vorschläge, wie das gemacht werden könnte?
MassenanpassungWindowsBetreff: Funktion (ParseDate) mit der Zeit formatierenVielen Dank, dieses Beispiel funktioniert für die getesteten Datum/Uhrzeit-Einstellungen.
Betreff: Funktion (ParseDate) mit der Zeit formatierenIch habe benutzt << Verwenden Sie Locale(), um Probleme mit Datums- und Uhrzeitformaten zu überwinden. Das von Ihnen bereitgestellte Beispiel hat das Problem nicht gelöst. Ich denke, dass ich später darauf zurückkomme, wenn ich Zeit habe (Wortspiel beabsichtigt). Das Problem mit dem Beispiel wird höchstwahrscheinlich mit << Use Locale() gelöst.Ich werde auch Format Pattern ausprobieren, wenn ich eine neuere Version von JMP bekomme.
Nochmals vielen Dank für die Weitergabe Ihres Wissens.
Betreff: Funktion (ParseDate) mit der Zeit formatierenHier ist eine Möglichkeit, das Problem zu lösen
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"));
Es wird im Protokoll angezeigt
Format(datetime, "m/d/y h:m:s") = "10/22/2022 4:25:37 PM";
Betreff: Funktion (ParseDate) mit der Zeit formatierenÜberprüfen Sie, ob die Verwendung von << Use Locale() überhaupt hilft.
JMP war vor JMP16 ziemlich schlecht darin, Zeit (und Daten) zu verwalten. Ich würde die Zeichenfolge höchstwahrscheinlich in Jahr, Monat, Tag, Stunde, Minute und Sekunde analysieren. Summieren Sie diese dann, um date_time zu erhalten. Mit JMP16 könnten Sie höchstwahrscheinlich einfach Format Pattern verwenden
Vielleicht kann das ein paar Anregungen geben:
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);
Betreff: Funktion (ParseDate) mit der Zeit informatierenEs scheint, dass Informat in Jmp 15.2 ausgefallene Muster wie z. B. einfach ignoriert hat
datetime= Informat( str, "yyyy-mm-dd HH:mm:ss" );
Sogar pattern = „hello“ ergibt

In späteren Versionen teilt Jmp dem Benutzer Folgendes mit:
Unbekanntes Format: Hallo
Was funktioniert:
Mit der Option Formatmuster informieren :
<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>