2009-09-11 3 views
8

Un client JavaScript invia alcune stringhe al mio server, una delle quali si presenta sotto forma di rappresentazione stringa di un oggetto Date di JavaScript.Parsing JavaScript Data string in Java

Ora, questo oggetto Data JavaScript ha una propria formattazione e mi chiedevo solo se esiste una classe che esegue la conversione corretta, poiché sto riscontrando problemi con lo SimpleDateFormatter.

Questo è come una stringa JavaScript Data assomiglia: Tue Feb 12 2013 21:12:28 GMT+0100 (CET)

+0

Quali sono i tuoi problemi con SimpleDateFormatter? –

+0

Prova moment.js, credimi mi libererai di tutti questi fastidiosi problemi. –

risposta

11

Il modo migliore per serializzare la data in javascript è utilizzare toUTCString (non solo toString()); toUTCString produrrà una data rfc 822 (nello stesso formato utilizzato da http). Quindi puoi semplicemente utilizzare il seguente schema SimpleDateFormat per analizzarlo in java:

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH) 
+2

Se non hai il controllo del produttore della data, e l'uso di '.toUTCString()' non è un'opzione, puoi usare questo formato: '" EE MMM dy H: m: s 'GMT'Z (zz) "' –

3

Personalmente preferisco le Joda Time formattatori per un motivo principale: sono thread-safe e non modificabile, in modo da poter creare uno, mantenerla staticamente, e riutilizzalo senza preoccupazioni. Joda consente inoltre di specificare facilmente i fusi orari, ecc. Ovviamente, finiscono per creare oggetti Joda, il che è un altro vantaggio IMO: cerco di evitare l'API di data/ora di Java laddove possibile.

Detto questo, avremmo bisogno di sapere di più sul formato che stai cercando di analizzare, e cosa c'è che non va con SimpleDateFormatter. (Come regola generale, se stai "provando problemi" con qualcosa e vuoi correggere questi problemi, aiuta a descrivere quali sono i problemi, idealmente con un programma breve ma completo per dimostrare il problema.)