Ho visto così tanti standard diversi per il formato di data JSON:
"\"\\/Date(1335205592410)\\/\"" .NET JavaScriptSerializer
"\"\\/Date(1335205592410-0500)\\/\"" .NET DataContractJsonSerializer
"2012-04-23T18:25:43.511Z" JavaScript built-in JSON object
"2012-04-21T18:25:43-05:00" ISO 8601
Qual è quello giusto? O il migliore? C'è una sorta di standard su questo?
Lo stesso JSON non specifica come le date dovrebbero essere rappresentate, ma JavaScript sì.
Dovresti usare il formato emesso da Date
'metodo toJSON
:
2012-04-23T18:25:43.511Z
Ecco perché:
È umanamente leggibile ma anche succinta
Ordina correttamente
Include i secondi frazionari, che possono aiutare a ristabilire la cronologia
È conforme a ISO 8601
La norma ISO 8601 si è affermata a livello internazionale da più di un decennio
Detto questo, ogni libreria di date mai scritta può capire "millisecondi dal 1970". Quindi, per una facile portabilità, ThiefMaster ha ragione.
JSON non sa nulla delle date. Quello che fa .NET è un hack/estensione non standard.
Io userei un formato che può essere facilmente convertito in un oggetto Date
in JavaScript, cioè uno che può essere passato a new Date(...)
. Il formato più semplice e probabilmente più portabile è il timestamp contenente millisecondi dal 1970.
Non c'è un formato giusto; La specifica JSON non specifica un formato per lo scambio di date, che è il motivo per cui ci sono così tanti modi diversi di farlo.
Il miglior formato è probabilmente una data rappresentata nel formato ISO 8601 (vedi Wikipedia); è un formato ben noto e ampiamente utilizzato e può essere gestito in molti linguaggi diversi, rendendolo molto adatto all'interoperabilità. Se si ha il controllo sul json generato, per esempio, si forniscono dati ad altri sistemi in formato json, scegliere 8601 come formato di interscambio delle date è una buona scelta.
Se non si ha il controllo sul json generato, per esempio, si è consumatori di json da diversi sistemi esistenti, il modo migliore per gestire questo è avere una funzione di utilità di analisi delle date per gestire i diversi formati previsti.