Problemi con i separatori temporaliStiamo riscontrando alcune difficoltà con i formati dell'ora durante l'importazione dei dati.
Nel nostro laboratorio disponiamo di un pool di computer con Win7 o Win10 con diverse impostazioni relative ai formati dell'ora. Ciò sembra causare problemi quando si tenta di importare dati con timestamp su JMP12 e 14. I nostri timestamp hanno il formato aaaa-mm-gg hh:mm:ss (ad esempio 2018-08-24 13:39:27) e a seconda del computer che testiamo, l'importazione funziona o fallisce, perché il formato dell'ora deve utilizzare o due punti o un punto.Come potremmo costruire uno script di importazione che funzioni su tutte le macchine?
Ci stiamo anche chiedendo perché non esiste un formato orario fisso in JMP che rimanga lo stesso nonostante le impostazioni in Windows? Dopotutto esiste lo standard ISO 8601 che definisce i due punti come separatore.
Re: Problemi con i separatori temporaliSi scopre che l'ambientazione suggerita da XanGregg era esattamente quella che stavamo cercando. Nel caso in cui qualcuno trovi questa conversazione in seguito, sembra che questa impostazione possa essere modificata anche con il seguente script.
Set preferences( Use JMP Locale Settings( 1 ) );
Ho anche finito per modificare leggermente il nostro input con regex come suggerito da Markbailey, quindi sono molto grato anche per questo suggerimento.
Re: Problemi con i separatori temporaliMolte grazie per la soluzione alternativa con RegEx. Con un test veloce sembra aiutarci ad andare avanti. Andrò anche a fare alcuni test con l'impostazione "Specifico per Windows" quando potrò accedere a un altro computer. Speriamo che questa sia la soluzione universale per noi.
Molte grazie per tutto l'aiuto!
Re: Problemi con i separatori temporaliQuando ho cambiato il separatore dell'ora di Win10 in "." ed ho eseguito lo script seguente, sembrava funzionare bene, quindi mi mancano alcuni dettagli.

Indipendentemente da ciò, ecco un paio di cose che potrebbero essere utili per il tuo caso.
- Esiste una preferenza globale JMP in "Specifico di Windows" per rispettare o meno le impostazioni locali del sistema
- Se importi la colonna come testo e la analizzi in un secondo momento, la funzione Parse Date() dispone di un argomento Usa impostazioni locali che puoi disattivare.
s = "time,
2018-08-24 13:39:27
2018-08-25 14:11:22
2018-08-26 16:33:44";
path = "$TEMP/times.csv";
Save Text File( path, s );
Open(path);
Re: Problemi con i separatori temporaliDispiace per la confusione.
No, in questo modo non funzionerà poiché gli argomenti definiscono un formato impostato e potrebbero non includere espressioni regolari. Vedi il mio ultimo post per un'altra idea.
Re: Problemi con i separatori temporaliSupponendo di importare il timestamp come stringa di caratteri in una colonna di dati denominata Date Time, una nuova colonna di dati numerici con questa formula dovrebbe restituire la data corretta indipendentemente dal formato utilizzato (dei due descritti):
Parse Date(
Regex( :Date Time,
"(\d{4}-\d{2}-\d{2} \d{2})[:\.](\d{2})[:\.](\d{2})",
"\1:\2:\3"
)
);Re: Problemi con i separatori temporaliMi chiedo se stiamo parlando della stessa cosa o se esiste un modo per utilizzare le espressioni regolari con cui non ho familiarità. Cercherò di spiegare il nostro problema in modo più chiaro.
I nostri dati hanno un formato coerente (hh:mm:ss). Ecco il separatore Sempre un colon. Ad esempio, JMP sul mio computer funziona bene con questo formato e posso facilmente importare questi dati semplicemente selezionando questo formato dal menu del formato di input. Quando la mia collega tenta di fare la stessa cosa, JMP sul suo computer non riconosce i dati come tempo. Sul suo computer il formato dell'ora deve essere hh.mm.ss (punto come separatore). Pertanto, per scrivere uno script per l'importazione, che funzioni su entrambi i computer, dovremmo prima identificare qual è il formato dell'ora previsto da JMP su quella particolare macchina.
È possibile utilizzare espressioni regolari nello script per determinare il formato di input? Attualmente dovremmo avere script diversi per macchine diverse (uno con i due punti e uno con il punto).
Format( "y.m.d h:m:s", 22, 0 ), Informat( "y-m-d h:m:s", 0 )<BR />
Format( "y.m.d h.m.s", 22, 0 ), Informat( "y-m-d h.m.s", 0 )<BR />
Possiamo usare questo invece?
</CODE><CODE class=" language-jsl">Format( "y.m.d h<SPAN>[\.:]</SPAN>m<SPAN>[\.:]</SPAN>s", 22, 0 ), Informat( "y-m-d h<SPAN>[\.:]</SPAN>m<SPAN>[\.:]</SPAN>s", 0 )
Re: Problemi con i separatori temporaliEcco perché ho suggerito un'espressione regolare. È possibile utilizzare "[\.:]" o "\.|:" come parte dell'espressione per la presenza del separatore. Non è necessario predeterminare quale formato è stato utilizzato.
Re: Problemi con i separatori temporaliGrazie per il suggerimento! Abbiamo provato a modificare i separatori e ciò può essere fatto abbastanza facilmente, ma non abbiamo trovato un modo per rilevare quali separatori si aspetta JMP poiché, a seconda della macchina in questione, possono essere un punto o due punti .
Re: Problemi con i separatori temporaliÈ possibile utilizzare un'espressione regolare per abbinare le parti di entrambe le opzioni di formattazione insieme alle funzioni dei caratteri per produrre un valore data-ora JMP coerente.