2009-07-06 6 views
21

Che cos'è un metodo di costruzione della stringa in modo tale che la funzione di costruzione Date() di Javascript possa analizzarlo e creare l'oggetto data appropriato?La stringa di formato Date.parse (...) corretta corretta?

ho provato queste stringhe di formato che non funzionano (utilizzando C# per generare le stringhe):

clientDate.ToString(); 
// gives: "11/05/2009 17:35:23 +00:00" 

clientDate.ToString("MMM' 'dd', 'yyyy' 'h':'mm':'ss' 'tt"); 
// works on an English server 
// but on a French server, gives: "mai 11, 2009 5:35:23" 
// Javascript won't parse that. 

clientDate.ToString("MM'-'dd'-'yyyy' 'HH':'mm':'ss") 
// gives: 05-11-2009 17:35:23 

Qual è il formato universale ??

+0

buona domanda, questo è un problema difficile – annakata

+0

Perché vuoi una singola stringa per quello? – Boldewyn

+0

Ho bisogno di inviare una stringa al browser in modo da poter quindi utilizzare Javascript per localizzare la stringa, utilizzando la funzione Javascript toLocaleString(). Tuttavia, ho avuto difficoltà a capire un formato di stringa singola di successo che verrà emesso da tutti i miei server. –

risposta

19

According to MDC:

Data una stringa che rappresenta un momento, parse restituisce il valore del tempo. Accetta la sintassi della data dello standard IETF (RFC 1123 Sezione 5.2.14 e altrove): "Mon, 25 Dec 1995 13:30:00 GMT". Comprende le abbreviazioni continentali degli Stati Uniti continentali, ma per uso generale usa un offset fuso orario, ad esempio "Mon, 25 Dec 1995 13:30:00 GMT+0430" (4 ore, 30 minuti ad est del meridiano di Greenwich). Se non si specifica un fuso orario, viene assunto il fuso orario locale. GMT e UTC sono considerati equivalenti.

Se non è possibile generare questo formato utilizzando inglese locale, provare a utilizzare Date.UTC

+0

RFC 1123 in soccorso! Grazie, Maciej! –

1

Se si desidera un formato locale indipendente JavaScript in grado di analizzare, è possibile utilizzare 2013-03-31T16:36:57+0900. Funziona almeno su Node.js e Chrome, quindi sospetto che sia standard.

+0

Non funziona su Android 2.2 (funziona su 2.3 e versioni successive). Non funziona su nessun dispositivo iOS (testato 5.0 e 6.0). –

+0

Che ne dici di "2013-03-31T16: 36: 57Z" allora? Funziona qui su iOS. La differenza è che ora deve essere GMT. – jcayzac

+1

Se solo fosse così semplice ... Quel formato (si chiama ISO-8601) non funzionerà neanche in IE8. –