convertir una fecha de una cadena en una fecha JMP: AM / PM frente a problemas de tiempo de 24 horasConsidere el siguiente escenario:
MiFechaStr = "19/02/2018 10:04:28 p. m.";
informat(MyDateStr, "m/d/yh:m:s");
Esto devuelve un valor de fecha/hora correcto (19 de febrero de 2018:22:04:28) en el registro de JMP, siempre que el formato de fecha/hora en mi computadora esté configurado en hh:mm:ss tt (es decir, 12 horas)
Si tengo el formato en mi computadora configurado en 24 horas ( HH: mm: ss ) y ejecuto el código anterior, JMP me da un valor faltante. No interpreta correctamente la fecha. Si dejo caer el "PM" del final, funcionará.
¿Cómo hago para que JMP analice correctamente las cadenas de fecha/hora especificadas en 12 horas cuando se ejecuta en una computadora configurada en 24 horas?
Re: convertir una fecha de una cadena en una fecha JMP: AM/PM frente a problemas de tiempo de 24 horasLlegué a la conclusión de que simplemente no se puede hacer en una sola línea:
<< use Locale(0) no tiene efecto en mi máquina, aún no interpretará una marca de tiempo que incluya AM/PM a menos que la computadora esté configurada en 12 horas.
hay una discusión similar que encontré aquí .
Mi conclusión fue que la única forma en que puedo hacerlo de manera confiable es así:
AM PM = substr ( TimeStampStr ,- 2 , 2 ) ;
TimeStampStr = sustituto ( TimeStampStr , " SOY" , "" , " PM" , "" ) ;
Fósforo ( AM PM ,
"SOY" , intentar ( : marca de tiempo = informar ( TimeStampStr , "m/d/a:m:s" )) ;
,
"PM" , intentar ( : marca de tiempo = informar ( TimeStampStr , "m/d/a:m:s" ) + En horas ( 12 ))
) ;
Que es un montón de código para hacer algo bastante trivial pero funciona
Re: convertir una fecha de una cadena en una fecha JMP: AM/PM frente a problemas de tiempo de 24 horasHola,
Esta es una respuesta tipo "ave María". ¿Qué obtienes si solo usas Informat (MyDateStr) o de manera equivalente,
Analizar fecha (MyDateStr).
Asimismo, en el libro Uso de JMP capítulo La ventana de información de la columna establece que "La fecha local varía según la configuración del sistema operativo local".Y el Referencia de sintaxis JSL espectáculos
Formato( x, "Moneda", "EUR", 20, <
InFormat() y Parse Date() muestran un tercer argumento <
Así que mis sugerencias de "avemaría" son:
- use Informat (MyDateStr) solo
- use Informat( MyDateStr, "m/d/yh:m:s", << Use Locale(0) );
- crear una columna a partir de la cadena
Ver el guión.Muestra el poder de Informat() incluso la conversión de propiedades 30/12/.... Pero la conversión en el lugar (al menos nuestros métodos anteriores) ya no funcionó.Espero que encuentres algo que funcione.
//------#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: conversión de una fecha de una cadena a una fecha JMP: problemas con el formato AM/PM frente al formato de 24 horasIncluso el
<< Use Locale(0)
A mí me funcionó. No lo encontré en ningún lado de la documentación. ¡Las conversiones de fecha y hora son muy difíciles!