Re: Se necesita ayuda para la conversión de carácter a fecha y horaSi tiene JMP16+, es posible que pueda hacerlo con Patrón de formato

Otro patrón es algo así como -- . y otra // ::
Re: Se necesita ayuda para la conversión de carácter a fecha y horaJim,
¿Dónde pongo esto?
Lo probé como fórmula, no funcionó.
Intenté ingresar esto como "Establecer patrón de formato" (como la sugerencia de jthi) y no puedo ingresar más de una línea.
Yo uso JMP 16
gracias
Re: Se necesita ayuda para la conversión de carácter a fecha y horaTengo JMP 16 y no funcionó. A continuación se muestran mis pasos. Le agradecería si puede señalar un error.
Primero puse una fórmula (que se olvidó antes) en
Fecha1.DateTimeFinalFormat = Fecha1.Char
Establezca el tipo/modelado de fecha Date1.DateTimeFinalFormat en Numérico y Continuo
Establecer formato en Patrón de formato
Desmarque "Usar formato de salida"
Establecer patrón de formato
// ::
En el lado de entrada, establezca el patrón de formato
-- .
a la que se emite un error:

Re: Se necesita ayuda para la conversión de carácter a fecha y horaTambién cambié HH a hh y AMPM a ampm en el lado de entrada.
En un momento, acepta el formato y luego devuelve la columna Date1.DateTime.FinalFormat a Carácter.
Re: Se necesita ayuda para la conversión de carácter a fecha y horaHola Altug,
Espero que estés bien, ¡ha pasado mucho tiempo!
Supongo que está haciendo esto mediante secuencias de comandos. JMP puede manejar muchos formatos de fecha y hora de forma nativa. Cuando este es el caso, la función Informat ( ) es excelente, porque convierte una cadena en una hora.
Su fecha es bastante cercana a un formato nativo. 22/03/22 12:13 no es un formato nativo, pero 22/03/22 12:13 sí lo es.
Entonces, todo lo que necesita cambiar es sus guiones a barras ( "-" se convierte en "/"), y su punto a dos puntos ( "." se convierte en ":" ).
El comando Sustituir ( ) puede hacer esto por usted. Una vez hecho esto, puede envolverlo en un Informat ( ) para obtener una fecha numérica. Todo lo que queda es aplicar el formato de visualización deseado, que es un formato de configuración regional.
Así que el proceso es escribir una nueva columna que:
a) tiene una fórmula que envuelve un Informat ( ) alrededor de un Sustituto ( ), y
b) formatea la salida para que se vea como usted quiere, mientras conserva la fecha numérica debajo.
Háganos saber cómo va esto,
Brady
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "FixedDate",
formula( Informat(
Substitute( :"date1.char"n,
"-", "/",
".", ":"
)
) ),
<<FORMAT></FORMAT>

Re: Se necesita ayuda para la conversión de carácter a fecha y horaHe tenido una buena cantidad de problemas con JMP y cómo maneja las fechas ( y sobre todo tiempos ) cuando los usuarios tienen diferentes configuraciones en la PC. JMP16+ lo ha mejorado un poco, pero aún puede ser muy molesto depurar si los usuarios tienen configuraciones locales diferentes.
La opción "más fácil" (y más robusta) siempre es (en mi opinión) construir la fecha y hora desde cero en función de la situación. Obtenga diferentes partes de la fecha y la hora y luego, por ejemplo, use Date MDY + cálculo de tiempo para obtener JMP datetime. Después de tener la fecha y hora de JMP, puede formatearla según sea necesario.
También puede probar y error e intentar obtener el patrón correcto primero en el editor de scripts:
Names Default To Here(1);
datetime_str = "03-Mar-22 12.13 PM";
show(datetime_str);
datetime = In Format(
datetime_str,
"Format Pattern",
"<DL><DD>-<MMM>-<YY> <HH>.<MM> <AMPM>"
);
show(datetime);
datestr = Format(datetime, "Format Pattern", "<MM>/</MM></AMPM></MM></HH></YY></MMM></DD><DD>/<YYYY> <HH>:<MM>:<SS> <AMPM>");
show(datestr);
// If I couldn't get Format Pattern fairly quickly, I would just give up and write my own
// parser. Something like this might work
datetime_str = "03-Mar-22 12.13 PM";
months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
date_str = Word(1, datetime_str);
time_str = Word(2, datetime_str);
ampm_str = Word(3, datetime_str);
day_str = Word(1, date_str, "-");
month_str = Word(2, date_str, "-");
year_str = Word(3, date_str, "-");
day_num = Num(day_str);
month_num = Contains(months, month_str);
year_num = 2000 + Num(year_str);
hour_str = Word(1, time_str, ".");
minute_str = Word(2, time_str, ".");
minute_num= Num(minute_str);
hour_num = Num(hour_str);
If(ampm_str == "AM",
if(hour_num == 12,
hour_num -= 12;
);
, ampm_str == "AM",
if(hour_num == 12,
hour_num = 12
,
hour_num += 12
)
);
date_datetime = Date DMY(day_num, month_num, year_num);
time_datetime = In Hours(hour_num) + In Minutes(minute_num);
final_datetime = date_datetime + time_datetime;
As Date(final_datetime);
<P> </P>
<P>Si tengo que jugar con las fechas y las horas, siempre intentaré usar el formato ISO YYYY-MM-DD hh24:mm:ss, ya que al menos tiene alguna esperanza de funcionar y sabes dónde está el mes sin tener suerte.</P>
<P> </P></AMPM></SS></MM></HH></YYYY></DD></DL>Re: Se necesita ayuda para la conversión de carácter a fecha y horaAquí hay un formato que parece funcionar
monList = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
Informat(
Char( Contains( monList, Word( 2, :Date1.Char, "-" ) ) ) || "/" || Word( 1, :Date1.Char, "-" ) || "/" || Word( 3, :Date1.Char, "-" ),
"m/d/y h:m"
);
El JSL anterior funciona solo si el período en el área de tiempo de los datos se cambia a un punto y coma.
Mi sugerencia es usar @brady_brady solución a continuación.
Re: Se necesita ayuda para la conversión de carácter a fecha y horaBrady,
Ha pasado mucho tiempo y espero que estés bien.
Su solución técnica ciertamente funciona bien, ya que funcionó muy bien. Al final, fue tan simple.
Gracias de nuevo por su apoyo.
Re: Se necesita ayuda para la conversión de carácter a fecha y horagracias jti por tu apoyo. También probaré este, al menos para aprender mejor.
gracias de nuevo
Re: Se necesita ayuda para la conversión de carácter a fecha y horagracias txnelson por su apoyo
Se necesita ayuda para la conversión de caracteres a fecha y horaHola
Adjunto una tabla de muestra de una sola fila.
La columna Date1 es un carácter
p.ej 03-mar-22 12:13
es decir. DD-MMM-AA HH.MM am/pm
Date2 tiene un formato de fecha y hora
Necesito una fórmula especialmente para Date1 para convertirla en DateTime con el formato deseado de
MM/DD/AAAA HH:MM:SS am/pm
(SS, los segundos serían automáticamente cero)
Mi objetivo es actualizar una tabla basada en una segunda (o unirme) una vez que pueda 2 columnas de fecha y hora comparables
nota: probé algunos intentos, ninguno funcionó hasta ahora. Agradezco la ayuda.
gracias
Ingeniería de Calidad y Procesos