Commençons par le but de ce post :
Avez-vous eu des problèmes avec les dates et les heures lorsque les utilisateurs ont des paramètres régionaux différents et comment les avez-vous gérés ?
De temps en temps, j'ai rencontré des problèmes avec différents formats d'heure (et de date) lors de la création de scripts et du partage de ces scripts (j'ai récemment travaillé avec des utilisateurs ayant des paramètres régionaux et JMP différents). Ce problème est généralement lié au format de l'heure, car JMP ne fournit pas de format "général" pour l'heure (pour la date, je peux utiliser la date locale).
Avant JMP16, j'ai créé mon propre code pour vérifier si l'utilisateur utilise : ou . comme séparateur d'heure, puis construit le format Locale Date Time basé sur cela :
timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1);
customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s";
JMP16 aide à cela avec Format Pattern mais ce n'est pas le plus simple à utiliser lors du formatage (l'utilisateur doit savoir utiliser <::> pour le séparateur de temps):
<-><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>Selon ce que je fais, j'ai différentes solutions, si je veux juste avoir la date et l'heure dans la zone de texte, j'utilise généralement simplement AsDate(), mais quand je veux créer des rapports spécifiques ou fournir une interface graphique avec une boîte d'édition numérique qui a une option de boîte de calendrier Je ne peux pas utiliser ça.</P><P>Vous trouverez ci-dessous quelques exemples sur le problème et les solutions que j'utilise actuellement en fonction de la version de JMP :</P><DIV class="lia-spoiler-container"><A class="lia-spoiler-link" href="#" rel="nofollow noopener noreferrer" target="_blank">Voir plus...</A><NOSCRIPT>(Surligner pour lire)</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
Mes résultats avec JMP16 :
J'ai créé une demande de fonctionnalité d'assistance JMP concernant l'option de format d'heure générale (heure de date locale ou format ISO) dans JMP, mais la personne d'assistance n'espérait pas trop qu'elle serait mise en œuvre il obtient des félicitations, il pourrait avoir une meilleure chance).
Et répétez la question :
Avez-vous eu ces problèmes avec les dates et les heures et comment les avez-vous gérés lorsque les utilisateurs ont des paramètres régionaux différents ?
Éditer:
Paramètres de formatage de mon ordinateur portable de travail à l'aide de JMP16 Pro :
Depuis mon autre PC avec des formats de date très étranges utilisant JMP15 :
Tableau de donnéesScriptCe comportement sera modifié au plus tard dans JMP17. Vous trouverez ci-dessous un exemple de fonctionnement dans 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"
Jusqu'à JMP17, j'utiliserai soit le modèle de format (JMP16) soit mes méthodes de création de date de lieu