Commençons par le but de cet article :
Avez-vous rencontré 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'avais créé mon propre code pour vérifier si l'utilisateur utilisait : ou . comme séparateur de temps, puis construit le format Date Time Locale 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 avec le modèle de format mais ce n'est pas le plus simple à utiliser lors du formatage (l'utilisateur doit savoir utiliser <::> pour le séparateur de temps) :
<HH24><::><MM> <::><SS> ");</SS></MM></HH24> En fonction de 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 AsDate(), mais lorsque je veux créer des rapports spécifiques ou fournir une interface graphique avec une zone d'édition de numéro qui a une option de boîte de calendrier Je ne peux pas utiliser ça.Vous trouverez ci-dessous quelques exemples du problème et des solutions que j'utilise actuellement en fonction de la version de JMP :Voir plus...(Surligner pour lire)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> ", << Définir l'enveloppe (500)), cal1 = Zone d'édition de nombre (Aujourd'hui ()), Zone de texte ("Locale Date Heure h: m: s", << Définir l'enveloppe (500)), cal2 = Zone d'édition de numéro (Aujourd'hui()), Zone de texte ("Locale Date Heure hms", << Définir Wrap(500)), cal3 = Zone d'édition de numéro (Aujourd'hui()), Zone de texte ("aaaa-mm-jjThh:mm:ss" , << Définir Wrap(500)), //Format ISO ? cal4 = Zone d'édition de nombres (Aujourd'hui()), Zone de texte ("Format de date des paramètres régionaux construits", << Définir Wrap(500)), cal5 = Zone d'édition de nombres (Aujourd'hui()), Zone de texte("Aucun format", << Définir le retour à la ligne(500)), cal6 = Zone d'édition du nombre (Aujourd'hui()) )); cal1 << Définir le format(Format("Modèle de format", "</SS></MM></HH24></YYYY></MM><-> <-> <::> <::> ")); cal2 << Définir le format(Format("Date heure locale h:m:s")); cal3 << Définir le format(Format("Date heure locale hms")); cal4 << Définir le format(Format( "aaaa-mm-jjThh:mm:ss")); timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1); customFormat = "Locale Date Heure h"||timeSeparator||"m"||timeSeparator||"s"; cal5 << Définir le format (customFormat); Print ("Afficher"); Show (Format (Aujourd'hui (), "Format Modèle", "<-> <-> <::> <::> ")); Show(Format(Aujourd'hui(),"Date et heure locales h:m:s")); Show(Format(Aujourd'hui(),"Date et heure locales hms")); Show(Format(Aujourd'hui( ),"aaaa-mm-jjThh:mm:ss")); Show(Format(Today(),customFormat)); Show(Today()); Print("Table de données"); dt = New Table("Sans titre ", Ajouter des lignes (1), Compresser le fichier une fois enregistré (1), Nouvelle colonne ("FormatPattern", Numeric, "Continuous", Format ("Meilleur", 12), << Définir chaque valeur (Aujourd'hui ())), Nouvelle colonne ("LocaleDateTime:", Numeric, "Continuous", Format("Best", 12), << Définir chaque valeur (Aujourd'hui())), Nouvelle colonne ("LocaleDateTime.", Numeric, "Continuous", Format ("Meilleur", 12), << Définir chaque valeur (Aujourd'hui ())), Nouvelle colonne ("ISO?", Numérique, "Continu", Format ("Meilleur", 12), << Définir chaque valeur (Aujourd'hui) ())), Nouvelle colonne("Personnalisée", Numérique, "Continu", Format("Meilleur", 12), << Définir chaque valeur (Aujourd'hui())), Nouvelle colonne("NoFormat", Numérique, "Continu ", Format("Meilleur", 12), << Définir chaque valeur (Aujourd'hui())) ); Colonne(dt, "FormatPattern") << Format("Modèle de format", "<-><MM><-><YYYY><HH24> <::><MM> <::><SS> "); Colonne(dt, "LocaleDateTime:") << Format("Locale Date Heure h:m:s"); Colonne(dt, "LocaleDateTime.") << Format("Locale Date Heure hms"); Colonne (dt, "ISO ?") << Format("aaaa-mm-jjThh:mm:ss"); Colonne(dt, "Personnalisé") << Format(customFormat); Show(Aujourd'hui());</SS></MM></HH24></YYYY></MM>Format("Format Pattern", "<YYYY><-><MM> <-></MM></YYYY>
Mes résultats en utilisant JMP16 :
J'ai créé une demande de fonctionnalité de support JMP concernant l'option de format d'heure générale (Date heure locale ou format ISO) dans JMP, mais la personne du support n'espérait pas trop qu'elle serait implémentée (peut-être si je créais un élément de liste de souhaits et ça donne des félicitations, ça pourrait avoir une meilleure chance).
Et répétition de la question :
Avez-vous rencontré 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 ?
Modifier:
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 :
Ce 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 Format Pattern (JMP16) ou mes méthodes de construction Locale Date