Comencemos con el propósito de esta publicación:
¿Ha tenido problemas con las fechas y horas en las que los usuarios tienen diferentes configuraciones regionales y cómo las ha manejado?
De vez en cuando me he enfrentado a problemas con diferentes formatos de hora (y fecha) al hacer scripts y compartir esos scripts (recientemente he estado trabajando con usuarios que tienen diferentes configuraciones regionales y JMP). Este problema suele estar relacionado con el formato de hora, ya que JMP no proporciona un formato "general" para la hora (para la fecha, puedo usar Locale Date).
Antes de JMP16, hice mi propio código para verificar si el usuario está usando: o. como separador de tiempo y luego construyó el formato de fecha y hora de Locale basado en eso:
timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1);
customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s";
JMP16 ayuda con esto con el patrón de formato, pero no es el más simple de usar al formatear (el usuario debe saber cómo usar <::> para el separador de tiempo):
<-><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 h.m.s", << 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 h.m.s"));
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 Pattern", "<-><-> <::><::>"));
Show(Format(Today(),"Locale Date Time h:m:s"));
Show(Format(Today()(),"Locale Date Time h.m.s"));
Show(Format(Today(),"yyyy-mm-ddThh:mm:ss"));
Show(Format(Today(),customFormat));
Show(Today());
Print("Data table");
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("FormatPattern", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("LocaleDateTime:", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("LocaleDateTime.", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("ISO?", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("Custom", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("NoFormat", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today()))
);
Column(dt, "FormatPattern") << Format("Format Pattern", "<-><-> <::><::>");
Column(dt, "LocaleDateTime:") << Format("Locale Date Time h:m:s");
Column(dt, "LocaleDateTime.") << Format("Locale Date Time h.m.s");
Column(dt, "ISO?") << Format("yyyy-mm-ddThh:mm:ss");
Column(dt, "Custom") << Format(customFormat);
Show(Today());Format("Format Pattern", "<YYYY><-><MM><-><DL><DD> <HH24><::><MM><::><SS>");<P> </P><P>Dependiendo de lo que estoy haciendo, tengo diferentes soluciones, si solo quiero tener la fecha y la hora en el cuadro de texto, generalmente solo uso AsDate (), pero cuando quiero crear informes específicos o proporcionar una GUI con el cuadro de edición de números que tiene la opción de cuadro de calendario No puedo usar ese.</P><P>A continuación, se muestran algunos ejemplos sobre el problema y las soluciones que estoy usando actualmente según la versión de JMP:</P><DIV class="lia-spoiler-container"><A class="lia-spoiler-link" href="#" rel="nofollow noopener noreferrer" target="_blank">Ver más...</A><NOSCRIPT>(Resalte para leer)</NOSCRIPT><DIV class="lia-spoiler-border"><DIV class="lia-spoiler-content"><PRE><CODE class=" language-jsl">Names Default To Here(1);
Clear Log();
Print("New window");
nw = New Window("", Lineup Box(N Col(2),
Text Box("Format Pattern
Mis resultados usando JMP16:
He creado una solicitud de función de soporte de JMP para tener la opción de formato de hora general (fecha y hora de configuración regional o formato ISO) en JMP, pero la persona de soporte no tenía muchas esperanzas de que se implementaría (tal vez si creo un elemento de la lista de deseos y obtiene Kudos, podría tener una mejor oportunidad).
Y repito la pregunta:
¿Ha tenido estos problemas con las fechas y horas y cómo los ha manejado cuando los usuarios tienen diferentes configuraciones regionales?
Editar:
Formatear la configuración de mi computadora portátil de trabajo usando JMP16 Pro:
Desde mi otra PC con formatos de fecha muy extraños usando JMP15:
Tabla de datosScriptingEste comportamiento se cambiará a más tardar en JMP17. A continuación se muestra un ejemplo de cómo debería funcionar en JMP17:
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"
Hasta JMP17, usaré el patrón de formato (JMP16) o mis métodos de construcción de fecha de configuración regional