conversion d'une date d'une chaîne en une date JMP : problèmes d'heure AM/PM vs 24hrConsidérez le scénario suivant :
MyDateStr = "19/02/2018 22:04:28" ;
informat(MaDateStr, "m/j/aa:m:s");
Cela renvoie une valeur de date/heure correcte ( 19Feb2018:22:04:28 ) dans le journal JMP, tant que le format de date/heure sur mon ordinateur est défini sur hh:mm:ss tt (c'est-à-dire 12 heures de temps)
Si le format sur mon ordinateur est défini sur 24 heures ( HH:mm:ss ) et que j'exécute le code ci-dessus, JMP me donne une valeur manquante. Il ne parvient pas à interpréter correctement la date. Si je supprime le "PM" à la fin, cela fonctionnera.
Comment puis-je faire en sorte que JMP analyse correctement les chaînes de date/heure spécifiées en 12 heures lors de l'exécution sur un ordinateur réglé sur 24 heures ?
Re : convertir une date d'une chaîne en une date JMP : problèmes de temps AM/PM vs 24 hrJ'en ai conclu que cela ne peut tout simplement pas être fait en 1 ligne :
<< use Locale(0) n'a aucun effet sur ma machine, il n'interprétera toujours pas un horodatage qui inclut AM/PM à moins que l'ordinateur ne soit réglé sur 12 heures.
il y a une discussion similaire que j'ai trouvé ici .
Ma conclusion était que la seule façon de le faire de manière fiable est la suivante:
MATIN APRÈS-MIDI = substr ( TimeStampStr ,- 2 , 2 ) ;
TimeStampStr = remplaçant ( TimeStampStr , " SUIS" , "" , "MP" , "" ) ;
Correspondre ( MATIN APRÈS-MIDI ,
"SUIS" , essayer ( : Horodatage = informer ( TimeStampStr , "m/j/aa:m:s" )) ;
,
"MP" , essayer ( : Horodatage = informer ( TimeStampStr , "m/j/aa:m:s" ) + EnHeures ( 12 ))
) ;
Ce qui fait beaucoup de code pour faire quelque chose d'assez trivial mais ça marche
Re : convertir une date d'une chaîne en une date JMP : problèmes de temps AM/PM vs 24 hrSalut,
Il s'agit d'une réponse de type "Je vous salue Marie". Qu'obtenez-vous si vous utilisez simplement Informat( MyDateStr ) ou de manière équivalente,
Analyser la date ( MyDateStr ).
Aussi, dans le livre Utilisation de JMP chapitre La fenêtre d'informations sur la colonne il indique que "la date locale varie en fonction des paramètres du système d'exploitation local".Et le Référence de la syntaxe JSL montre
Format( x, "Devise", "EUR", 20, <
InFormat() et Parse Date() affichent un 3ème argument <
Donc mes "suggestions je vous salue Marie sont :
- utiliser Informat( MyDateStr ) seul
- use Informat( MyDateStr, "m/d/yh:m:s", << Use Locale(0) );
- créer une colonne à partir de la chaîne
Voir le scénario.Cela montre la puissance d'Informat() même en convertissant correctement 30/12/.... Mais la conversion en place (du moins nos méthodes précédentes) ne fonctionnait plus.J'espère que vous trouverez quelque chose qui fonctionne.
//------#6: Create a data table with a Character column of different date time formats
dtimeList={};
InsertInto( dtimeList, "JUN162010 2:59:13");
InsertInto( dtimeList, Format(AsDate(Today()), "yyyy-mm-ddThh:mm:ss"));
InsertInto( dtimeList,Format(AsDate(Today() - 3*34*60), "yyyy-mm-ddThh:mm"));
InsertInto( dtimeList,Format(AsDate(Today() + 12*34*60), "yyyy-mm-ddThh:mm"));
InsertInto( dtimeList, "12/01/2010");
InsertInto( dtimeList, "01/12/2010");
InsertInto( dtimeList, "30/12/2010 1:1:1");
test3_dt = New Table ("Test Datetime", new Column("dummy", character));
test3_dt << add rows( nitems(dtimelist));
test3_dt:dummy << set values (dtimeList);
//----run to here---------------------------------------------------------
//----Look at the data table...create a new column using Parse Date function
convCol = test3_dt << New Column( "Parsed dummy", Numeric, Continuous );
convCol << set each value (Informat(:dummy) );
convCol << Format("monddyyyy h:m:s");
wait(2);
convCol << Format("m/d/y h:m:s");
//---The code below worked in JMP 8 and 9 and 10 and maybe 11. It does not work in JMP 12, 13, 14
//Also, even though the column has mixed formats, by converting to numeric,
//continuous and specifying a datetime format, JMP automatically parses the dates
//:dummy << {data type( "Numeric"), Modeling Type("Continuous") };
//:dummy << Format("m/d/y h:m:s" );
Re: conversion d'une date d'une chaîne en une date JMP : problèmes d'heure AM/PM vs 24 heuresMême le
<< Use Locale(0)
ça a marché pour moi. Je n'ai trouvé ça nulle part dans la documentation. Bon sang, les conversions de date/heure sont si difficiles !