Partiamo dallo scopo di questo post:
Hai riscontrato problemi con date e orari in cui gli utenti hanno impostazioni regionali diverse e come li hai gestiti?
Di tanto in tanto ho riscontrato problemi con formati di ora (e data) diversi durante l'esecuzione di script e la condivisione di tali script (di recente ho lavorato con utenti con impostazioni locali e JMP diverse). Questo problema è solitamente legato al formato dell'ora, poiché JMP non fornisce un formato "generale" per l'ora (per la data posso utilizzare la data locale).
Prima di JMP16 ho creato il mio codice per verificare se l'utente sta utilizzando: o . come separatore temporale e quindi creato il formato Locale Date Time basato su quello:
timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1);
customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s";
JMP16 aiuta in questo con Format Pattern ma non è il più semplice da usare durante la formattazione (l'utente deve sapere usare <::> per il separatore temporale):
<HH24><::><MM> <::><SS> ");</SS></MM></HH24> A seconda di ciò che sto facendo, ho soluzioni diverse, se voglio solo avere data e ora nella casella di testo di solito utilizzo solo AsDate(), ma quando voglio creare report specifici o fornire alla GUI una casella di modifica numero che ha l'opzione casella calendario Non posso usarlo.Di seguito sono riportati un paio di esempi sul problema e le soluzioni che sto attualmente utilizzando a seconda della versione di JMP:Visualizza altro...(Evidenziare da leggere)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> ", << Imposta la casella di modifica del numero(500)), cal1 = Casella di modifica del numero(Oggi()), casella di testo("Data e ora locale h:m:s", << Imposta la casella di modifica del numero(500)), cal2 = Casella di modifica del numero (Oggi()), Casella di testo("Data ora locale hms", << Imposta Wrap(500)), cal3 = Casella di modifica numero(Oggi()), Casella di testo("aaaa-mm-ggThh:mm:ss" , << Imposta Wrap(500)), // Formato ISO? cal4 = Casella di modifica numero(Oggi()), Casella di testo("Formato data locale creato", << Imposta Wrap(500)), cal5 = Casella di modifica numero (Oggi()), Casella di testo("Nessun formato", << Imposta Wrap(500)), cal6 = Casella di modifica numero(Oggi()) )); cal1 << Imposta formato(Format("Modello formato", "</SS></MM></HH24></YYYY></MM><-> <-> <::> <::> ")); cal2 << Imposta formato(Format("Data ora locale h:m:s")); cal3 << Imposta formato(Format("Data ora locale hms")); cal4 << Imposta formato(Format( "aaaa-mm-ggThh:mm:ss")); timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1); customFormat = "Locale Data Ora h"||timeSeparator||"m"||timeSeparator||"s"; cal5 << Imposta formato(customFormat); Print("Mostra"); Mostra(Format(Oggi(),"Format Modello", "<-> <-> <::> <::> ")); Mostra(Formato(Oggi(),"Data Ora locale h:m:s")); Mostra(Formato(Oggi()(),"Data Ora locale hms")); Mostra(Formato(Oggi( ),"aaaa-mm-ggThh:mm:ss")); Mostra(Formato(Oggi(),Formatopersonalizzato)); Mostra(Oggi()); Stampa("Tabella dati"); dt = Nuova tabella("Senza titolo ", Aggiungi righe(1), Comprimi file al salvataggio(1), Nuova colonna("FormatPattern", Numerico, "Continuo", Format("Migliore", 12), << Imposta ciascun valore(Oggi())), Nuova colonna("LocaleDateTime:", Numerico, "Continuo", Formato("Migliore", 12), << Imposta ciascun valore(Oggi())), Nuova colonna("LocaleDateTime.", Numerico, "Continuo", Formato ("Migliore", 12), << Imposta ciascun valore (Oggi())), Nuova colonna ("ISO?", Numerico, "Continuo", Formato ("Migliore", 12), << Imposta ciascun valore (Oggi ())), Nuova colonna("Personalizzato", Numerico, "Continuo", Formato("Migliore", 12), << Imposta ogni valore(Oggi())), Nuova colonna("NoFormat", Numerico, "Continuo ", Format("Migliore", 12), << Imposta ciascun valore(Oggi())) ); Colonna(dt, "FormatPattern") << Format("Modello di formato", "<-><MM><-><YYYY><HH24> <::><MM> <::><SS> "); Colonna(dt, "LocaleDateTime:") << Formato("Data Ora locale h:m:s"); Colonna(dt, "LocaleDateTime.") << Formato("Data Ora locale hms"); Colonna (dt, "ISO?") << Formato("aaaa-mm-ggThh:mm:ss"); Colonna(dt, "Personalizzato") << Formato(formatopersonalizzato); Mostra(Oggi());</SS></MM></HH24></YYYY></MM>Format("Format Pattern", "<YYYY><-><MM> <-></MM></YYYY>
I miei risultati utilizzando JMP16:
Ho creato una richiesta di funzionalità di supporto JMP relativa all'opzione del formato orario generale (data e ora locale o formato ISO) in JMP, ma la persona dell'assistenza non era troppo fiduciosa che sarebbe stata implementata (forse se avessi creato un elemento della lista dei desideri e ottiene complimenti, potrebbe avere maggiori possibilità).
E ripeto la domanda:
Hai riscontrato questi problemi con date e orari e come li hai gestiti quando gli utenti hanno impostazioni regionali diverse?
Modificare:
Impostazioni di formattazione dal mio laptop da lavoro utilizzando JMP16 Pro:
Dall'altro mio PC con formati di data molto strani utilizzando JMP15:
Questo comportamento verrà modificato al più tardi in JMP17. Di seguito è riportato un esempio di come dovrebbe funzionare in 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"
Fino a JMP17 utilizzerò Format Pattern (JMP16) o i miei metodi di creazione della data locale