Beginnen wir mit dem Zweck dieses Beitrags:
Hatten Sie Probleme mit Datum und Uhrzeit, wenn Benutzer unterschiedliche regionale Einstellungen haben, und wie sind Sie damit umgegangen?
Von Zeit zu Zeit hatte ich beim Erstellen von Skripten und beim Teilen dieser Skripte Probleme mit unterschiedlichen Zeitformaten (und Datumsangaben) (ich habe in letzter Zeit mit Benutzern gearbeitet, die unterschiedliche Gebietsschema- und JMP-Einstellungen hatten). Dieses Problem hängt normalerweise mit dem Zeitformat zusammen, da JMP kein „allgemeines“ Format für die Zeit bereitstellt (für das Datum kann ich das „Locale Date“ verwenden).
Vor JMP16 habe ich meinen eigenen Code erstellt, um zu überprüfen, ob der Benutzer : oder verwendet. als Zeittrennzeichen und erstellte dann das darauf basierende Locale Date Time-Format:
timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1);
customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s";
JMP16 hilft dabei mit dem Formatmuster, es ist jedoch nicht das einfachste Formatierungsmuster (der Benutzer muss wissen, wie man <::> als Zeittrennzeichen verwendet):
<HH24><::><MM> <::><SS> ");</SS></MM></HH24> Je nachdem, was ich mache, habe ich unterschiedliche Lösungen: Wenn ich nur Datum und Uhrzeit im Textfeld haben möchte, verwende ich normalerweise nur AsDate(), aber wenn ich bestimmte Berichte erstellen oder die GUI mit einem Zahlenbearbeitungsfeld mit Kalenderfeldoption versehen möchte Ich kann das nicht benutzen.Nachfolgend finden Sie einige Beispiele zu dem Problem und Lösungen, die ich derzeit je nach JMP-Version verwende:Mehr sehen...(Zum Lesen markieren)Names Default To Here(1);
Clear Log();
Print("New window");
nw = New Window("", Lineup Box(N Col(2),
Text Box("Format Pattern <-><MM> <-><YYYY><HH24> <::><MM> <::><SS> ", << Set Wrap(500)), cal1 = Number Edit Box(Today()), Text Box("Locale Date Time h:m:s", << Set Wrap(500)), cal2 = Number Edit Box (Today()), Text Box("Locale Date Time hms", << Set Wrap(500)), cal3 = Number Edit Box(Today()), Text Box("yyyy-mm-ddThh:mm:ss" , << Set Wrap(500)), //ISO-Format? cal4 = Number Edit Box(Today()), Text Box("Built Locale Date Format", << Set Wrap(500)), cal5 = Number Edit Box (Today()), Text Box("No format", << Set Wrap(500)), cal6 = Number Edit Box(Today()) )); cal1 << Set Format(Format("Format Pattern", "</SS></MM></HH24></YYYY></MM><-> <-> <::> <::> ")); cal2 << Set Format(Format("Locale Date Time h:m:s")); cal3 << Set Format(Format("Locale Date Time hms")); cal4 << Set Format(Format( "yyyy-mm-ddThh:mm:ss")); timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1); customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s"; cal5 << Set Format(customFormat); Print("Show"); Show(Format(Today(),"Format Muster", "<-> <-> <::> <::> ")); Show(Format(Today(),"Locale Date Time h:m:s")); Show(Format(Today()(),"Locale Date Time hms")); Show(Format(Today( ),"yyyy-mm-ddThh:mm:ss")); Show(Format(Today(),customFormat)); Show(Today()); Print("Data table"); dt = New Table("Untitled ", Zeilen hinzufügen(1), Datei beim Speichern komprimieren(1), Neue Spalte("FormatPattern", Numerisch, "Kontinuierlich", Format("Best", 12), << Jeden Wert festlegen(Today())), Neue Spalte („LocaleDateTime:“, Numerisch, „Kontinuierlich“, Format („Best“, 12), << Jeden Wert festlegen (Today())), Neue Spalte („LocaleDateTime.“, Numerisch, „Kontinuierlich“, Format ("Beste", 12), << Jeden Wert festlegen(Today())), Neue Spalte("ISO?", Numerisch, "Kontinuierlich", Format("Beste", 12), << Jeden Wert festlegen(Today ())), Neue Spalte("Benutzerdefiniert", Numerisch, "Kontinuierlich", Format("Best", 12), << Jeden Wert festlegen(Today())), Neue Spalte("NoFormat", Numerisch, "Kontinuierlich ", Format("Best", 12), << Set Each Value(Today())) ); Column(dt, "FormatPattern") << Format("Format Pattern", "<-><MM><-><YYYY><HH24> <::><MM> <::><SS> "); Column(dt, "LocaleDateTime:") << Format("Locale Date Time h:m:s"); Column(dt, "LocaleDateTime.") << Format("Locale Date Time hms"); Column (dt, "ISO?") << Format("yyyy-mm-ddThh:mm:ss"); Column(dt, "Custom") << Format(customFormat); Show(Today());</SS></MM></HH24></YYYY></MM>Format("Format Pattern", "<YYYY><-><MM> <-></MM></YYYY>
Meine Ergebnisse mit JMP16:
Ich habe eine JMP-Supportfunktionsanfrage bezüglich der Option für das allgemeine Zeitformat (Locale Date Time oder ISO-Format) in JMP erstellt, aber der Supportmitarbeiter war nicht allzu hoffnungsvoll, dass sie implementiert würde (vielleicht, wenn ich einen Wunschlisteneintrag erstelle und ... es bekommt Lob, es könnte eine bessere Chance bekommen).
Und Wiederholung der Frage:
Hatten Sie diese Probleme mit Datum und Uhrzeit und wie sind Sie damit umgegangen, wenn Benutzer unterschiedliche regionale Einstellungen haben?
Bearbeiten:
Formatierungseinstellungen von meinem Arbeitslaptop mit JMP16 Pro:
Von meinem anderen PC mit sehr seltsamen Datumsformaten unter Verwendung von JMP15:
Dieses Verhalten wird spätestens in JMP17 geändert. Nachfolgend finden Sie ein Beispiel, wie es in JMP17 funktionieren sollte:
Format(Today(), "Locale Date Time h:m:s"); = "12/07/2021 16.07.20"
Format(Today(), "Locale Date Time h.m.s"); = "12/07/2021 16.07.20"
Bis JMP17 werde ich entweder Format Pattern (JMP16) oder meine Locale Date-Erstellungsmethoden verwenden