Ri: Necessario aiuto per la conversione da carattere a data/oraSe hai JMP16+ potresti essere in grado di farlo con Format Pattern

Altro modello è qualcosa di simile -- . e altro // ::
Ri: Necessario aiuto per la conversione da carattere a data/oraJim,
Dove lo metto?
L'ho provato come formula, non ha funzionato
Ho provato a inserirlo come "Set Format Pattern" (come il suggerimento di jthi) e non posso inserire più di una riga.
Uso JMP 16
Grazie
Ri: Necessario aiuto per la conversione da carattere a data/oraHo JMP 16 e non ha funzionato. Di seguito i miei passaggi. Ti sarei grato se potessi indicare un errore.
Per prima cosa ho inserito una formula (che era stata dimenticata in precedenza).
Date1.DateTimeFinalFormat = Date1.Char
Impostare Date1.DateTimeFinalFormat tipo di data/modellazione su Numerico e Continuo
Imposta il formato su Formato modello
Deseleziona "Usa formato di output"
Imposta modello di formato
// ::
Sul lato input, Imposta modello di formato
-- .
a cui viene emesso un errore:

Ri: Necessario aiuto per la conversione da carattere a data/oraHo anche cambiato HH in hh e AMPM in ampm sul lato input..
Ad un certo punto, accetta il formato e quindi restituisce la colonna Date1.DateTime.FinalFormat a Character.
Ri: Necessario aiuto per la conversione da carattere a data/oraCiao Altug,
Spero che tu stia bene, è passato tanto tempo!
Presumo che tu lo stia facendo tramite script. JMP è in grado di gestire molti formati di data e ora in modo nativo. Quando questo è il caso, la funzione Informat ( ) è ottima, perché converte una stringa in un tempo.
La tua data è abbastanza vicina a un formato nativo. 03-mar-22 12:13 non è un formato nativo, ma 03/mar-22 12:13 lo è!
Quindi, tutto ciò che devi cambiare sono i trattini in barre ("-" diventa "/" ) e il punto in due punti ( "." diventa ":" ).
Il comando Sostituisci ( ) può farlo per te. Una volta fatto ciò, puoi avvolgerlo in un Informat ( ) per ottenere una data numerica. Non resta che applicare il formato di visualizzazione desiderato, che è un formato Locale.
Quindi il processo consiste nello scrivere una nuova colonna che:
a) ha una formula che avvolge un Informat ( ) attorno a un Sostituto ( ), e
b) formatta l'output in modo che appaia come desideri, pur mantenendo la data numerica sottostante.
Facci sapere come va,
Brady
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "FixedDate",
formula( Informat(
Substitute( :"date1.char"n,
"-", "/",
".", ":"
)
) ),
<<FORMAT></FORMAT>

Ri: Necessario aiuto per la conversione da carattere a data/oraHo avuto la mia giusta dose di problemi con JMP e come gestisce le date ( e soprattutto tempi ) quando gli utenti hanno impostazioni diverse sul PC. JMP16+ lo ha migliorato un po', ma può comunque essere molto fastidioso per il debug se gli utenti hanno impostazioni locali diverse.
L'opzione "più semplice" (e più robusta) è sempre (secondo me) creare il datetime da zero in base alla situazione. Ottieni diverse parti della data e dell'ora e quindi, ad esempio, usa Date MDY + calcolo dell'ora per ottenere JMP datetime. Dopo aver ottenuto il valore datetime di JMP, è possibile formattarlo secondo necessità.
Puoi anche provare ed errori e provare a ottenere prima il modello corretto nell'editor di script:
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>Se devo giocare con date e orari, cercherò sempre di scegliere il formato ISO AAAA-MM-GG hh24:mm:ss perché almeno ha qualche speranza di funzionare e sai dov'è il mese senza essere fortunato.</P>
<P> </P></AMPM></SS></MM></HH></YYYY></DD></DL>Ri: Necessario aiuto per la conversione da carattere a data/oraEcco un formato che sembra funzionare
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"
);
Il suddetto JSL funziona solo se il periodo nell'area temporale dei dati viene modificato in un punto e virgola.
Il mio consiglio è di usare @brady_brady soluzione qui sotto.
Ri: Necessario aiuto per la conversione da carattere a data/oraBrady,
È passato molto tempo e spero che tu stia bene.
La tua soluzione tecnica funziona sicuramente bene, poiché ha funzionato alla grande. Alla fine, è stato così semplice.
Grazie ancora per il vostro sostegno.
Ri: Necessario aiuto per la conversione da carattere a data/oragrazie jthi per il tuo supporto. Proverò anche questo, almeno per imparare meglio.
grazie di nuovo
Ri: Necessario aiuto per la conversione da carattere a data/oragrazie txnelson per il tuo supporto
Necessario aiuto per la conversione da carattere a data/oraCIAO
Allego una tabella di esempio a riga singola.
La colonna Date1 è carattere
per esempio 03-mar-22 12:13
cioè. GG-MMM-AA HH.MM am/pm
Date2 ha un formato data/ora
Ho bisogno di una formula per Date1 in particolare per convertirlo in DateTime con il formato desiderato di
MM/GG/AAAA HH:MM:SS am/pm
(SS, i secondi sarebbero automaticamente zero)
Il mio obiettivo è aggiornare una tabella basata su una seconda (o unirmi) una volta che posso 2 colonne datetime comparabili
nota: ho provato alcuni tentativi, nessuno ha funzionato finora. Apprezzo l'aiuto.
Grazie
Qualità e ingegneria di processo