Konvertieren eines Datums aus einer Zeichenfolge in ein JMP-Datum: AM/PM vs. 24-Stunden-ZeitproblemeStellen Sie sich das folgende Szenario vor:
MyDateStr = "19.02.2018 22:04:28";
informat(MyDateStr, "m/d/yh:m:s");
Dies gibt einen korrekten Datums-/Uhrzeitwert ( 19Feb2018:22:04:28 ) im JMP-Protokoll zurück. solange das Datums-/Uhrzeitformat auf meinem Computer auf hh:mm:ss tt eingestellt ist (dh 12 Stunden Zeit)
Wenn ich das Format auf meinem Computer auf 24-Stunden-Zeit ( HH:mm:ss ) eingestellt habe und den obigen Code ausführe, gibt mir JMP einen fehlenden Wert. Das Datum wird nicht richtig interpretiert. Wenn ich das „PM“ am Ende weglasse, funktioniert es.
Wie kann ich JMP dazu bringen, im 12-Stunden-Format angegebene Datums-/Uhrzeitzeichenfolgen korrekt zu analysieren, wenn es auf einem Computer ausgeführt wird, der auf das 24-Stunden-Format eingestellt ist?
Betreff: Konvertieren eines Datums aus einer Zeichenfolge in ein JMP-Datum: Probleme mit der AM/PM- oder 24-Stunden-ZeitIch kam zu dem Schluss, dass es einfach nicht in einem Einzeiler möglich ist:
<< Die Verwendung von Locale(0) hat keine Auswirkungen auf meinen Computer. Es wird jedoch kein Zeitstempel interpretiert, der AM/PM enthält, es sei denn, der Computer ist auf 12 Stunden eingestellt.
Ich habe eine ähnliche Diskussion gefunden Hier .
Meine Schlussfolgerung war, dass ich es nur so zuverlässig machen kann:
AMPM = Unterstr ( TimeStampStr ,- 2 , 2 ) ;
TimeStampStr = Ersatz ( TimeStampStr , " BIN" , „“ , „PN“ , „“ ) ;
Passen ( AMPM ,
"BIN" , versuchen ( : Zeitstempel = informieren ( TimeStampStr , „m/d/jh:m:s“ )) ;
,
„PN“ , versuchen ( : Zeitstempel = informieren ( TimeStampStr , „m/d/jh:m:s“ ) + In Stunden ( 12 ))
) ;
Das ist eine ganze Menge Code, um etwas ziemlich Triviales zu tun, aber es funktioniert
Betreff: Konvertieren eines Datums aus einer Zeichenfolge in ein JMP-Datum: Probleme mit der AM/PM- oder 24-Stunden-ZeitHallo,
Dies ist eine Art „Ave Maria“-Antwort. Was erhalten Sie, wenn Sie nur Informat( MyDateStr ) oder ein gleichwertiges Mittel verwenden?
Parse Date( MyDateStr ).
Auch im Buch Mit JMP Kapitel Das Spalten-Infofenster Darin heißt es: „Das Gebietsschemadatum variiert je nach lokaler Betriebssystemeinstellung.“Und das JSL-Syntaxreferenz zeigt an
Format( x, "Currency", "EUR", 20, <
InFormat() und Parse Date() zeigen ein drittes Argument <
Meine „Gegrüßet seist du Maria“-Vorschläge sind also:
- Verwenden Sie Informat( MyDateStr ) allein
- use Informat( MyDateStr, "m/d/yh:m:s", << Use Locale(0) );
- Erstellen Sie eine Spalte aus der Zeichenfolge
Siehe das Skript.Es zeigt die Leistungsfähigkeit von Informat(), selbst wenn es 30/12/... richtig konvertiert. Aber die Konvertierung vor Ort (zumindest unsere bisherigen Methoden) funktionierte nicht mehr.Ich hoffe, Sie finden etwas, das funktioniert.
//------#6: Create a data table with a Character column of different date time formats
dtimeList={};
InsertInto( dtimeList, "JUN162010 2:59:13");
InsertInto( dtimeList, Format(AsDate(Today()), "yyyy-mm-ddThh:mm:ss"));
InsertInto( dtimeList,Format(AsDate(Today() - 3*34*60), "yyyy-mm-ddThh:mm"));
InsertInto( dtimeList,Format(AsDate(Today() + 12*34*60), "yyyy-mm-ddThh:mm"));
InsertInto( dtimeList, "12/01/2010");
InsertInto( dtimeList, "01/12/2010");
InsertInto( dtimeList, "30/12/2010 1:1:1");
test3_dt = New Table ("Test Datetime", new Column("dummy", character));
test3_dt << add rows( nitems(dtimelist));
test3_dt:dummy << set values (dtimeList);
//----run to here---------------------------------------------------------
//----Look at the data table...create a new column using Parse Date function
convCol = test3_dt << New Column( "Parsed dummy", Numeric, Continuous );
convCol << set each value (Informat(:dummy) );
convCol << Format("monddyyyy h:m:s");
wait(2);
convCol << Format("m/d/y h:m:s");
//---The code below worked in JMP 8 and 9 and 10 and maybe 11. It does not work in JMP 12, 13, 14
//Also, even though the column has mixed formats, by converting to numeric,
//continuous and specifying a datetime format, JMP automatically parses the dates
//:dummy << {data type( "Numeric"), Modeling Type("Continuous") };
//:dummy << Format("m/d/y h:m:s" );
Betreff: Konvertieren eines Datums aus einer Zeichenfolge in ein JMP-Datum: Probleme mit AM/PM vs. 24-Stunden-ZeitSogar die
<< Use Locale(0)
hat bei mir funktioniert. Das habe ich nirgendwo in der Dokumentation gefunden. Mann, Datums-/Zeitkonvertierungen sind so schwierig!