come trattare con diversi formati di 'formato ora / data'?

1

Diversi sistemi accettano diversi formati di tempo di formazione. Per es.

  • java, jquery: aaaa-MM-gg HH: mm
  • alcuni plugin jquery: aa-mm-gg HH: MM
  • momentjs: YYYY-MM-DD HH: mm
  • ISO-8601: AAAA-MM-GG hh: mm
  • etc

Sul server memorizzo l'ora come Epoch. E piace memorizzare un timeformat per l'utente, quindi vede lo stesso formato ovunque. Ma non posso semplicemente salvare e passare la stringa di formato in quanto verrà utilizzata in modo diverso. Ho visto varie soluzioni, come limitare la scelta a 3-5 opzioni predefinite e avere una lista di queste opzioni in ogni sistema.

Come conservare il formato dell'ora e mostrare l'ora del tempo formattata all'utente in modo economico?

---- Esempio ----

Memorizzo l'ora sul server come valore 1412063513. Nel browser l'utente vuole vederlo come 2014-09-30 10:51. Quindi fornisce il formato temporale desiderato come 'AAAA-MM-GG HH: mm'. Ho salvato quel formato sul server, ma se ho bisogno di usarlo sul lato server (java) ho avuto problemi, in quanto non è valido a causa di lettere maiuscole. E quando altri sistemi cercano di interrogare i dati e formattarli, si pone lo stesso problema.

    
posta Konstantin Petrukhnov 29.09.2014 - 09:57
fonte

2 risposte

2

Più formati supportano più problemi che inevitabilmente si presentano quando si ha a che fare con i formati datetime.

Se intendi convalidare il valore in entrata allora (sono sicuro che sto affermando l'ovvio qui ma) non consiglierei di provare a creare il tuo processo per farlo, poiché è spesso un campo minato di problemi. L'oggetto DateTime in PHP è un ottimo strumento per gestire una varietà di formati di data di input semplicemente, consentendo di convalidare e definire il formato di output, consentendo quindi di memorizzare il valore in un unico formato, come suggerisce l'anomalia nei suoi commenti sopra. momentjs.com ha anche capacità simili. Sono sicuro che esistono anche molti altri!

Se è necessario visualizzare nuovamente la data-ora nel formato originale in cui è stata ricevuta, l'unica opzione che posso vedere sarebbe quella di identificare il formato in entrata in primo luogo, memorizzare questo formato insieme al valore originale, e quindi utilizzare nuovamente il metodo di formato degli oggetti DateTime utilizzando il formato memorizzato quando si costruisce il contenuto di output.

Personalmente vorrei mettere in dubbio se gli utenti hanno davvero bisogno di vedere la data di uscita nel formato originale. Un formato standard sarebbe più coerente e molto meno un mal di testa per te nel lungo periodo che riguarda nuovi formati e bug ecc.

    
risposta data 29.09.2014 - 12:53
fonte
1

Accetta

Non esiste una risposta singola o semplice a questo problema (ho avuto a che fare per 30 anni ...) e la tua soluzione locale dipenderà solo dalla tecnologia, dalle impostazioni internazionali e dagli strumenti che hai.

archiviazione

Utilizzare un meccanismo di archiviazione che supporti data e tipi di dati datetime. Ciò ti eviterà di reinventare la ruota quando si tratta di convalide e ti fornirà una memoria interna coerente e un formato su cui poter fare affidamento. Ciò significa che nella tua memoria hai indirizzato diversi formati di data scegliendo uno.

Mostra

Visualizzare in base alle preferenze locali e considerare l'utilizzo delle impostazioni locali dell'utente per determinare il formato. Dovrai utilizzare un formato accettato dagli utenti o dalla lingua o dalle biblioteche utilizzate.

ingresso

Utilizza una varietà di meccanismi per dire all'utente il formato che dovrebbero usare, comprese le istruzioni, le etichette, il testo automatico del campo di input, ecc. Considera di usare una "parola" per il mese in modo da evitare, ad esempio, la 12-01-2014 o 01-12-2014 problema (nel Regno Unito Dec 1st è 1/12 , negli Stati Uniti è 12/1 ) utilizzando i formati con month , ad es. dd-mon-yyyy che userebbe 01-dec-2014 per il 1 ° dicembre Questo risolve i problemi di diverso formato in diverse librerie definendo il formato da usare.

    
risposta data 29.09.2014 - 13:42
fonte

Leggi altre domande sui tag