2013-07-21 12 views
5

Sto utilizzando JSON per inviare dati al client. Tuttavia, i campi della data vengono trasformati in un formato temporizzato come /Date(1363807800000)/.C'è un modo per cambiare la formattazione dell'ora della data in JSON?

È necessario sbarazzarsi di esso e lasciare che il server invii i valori DateTime come 2013/7/21 3:44 PM al client?

+0

Cosa c'è che non va con JSON fmt? –

+0

Che linguaggio di programmazione del server stai usando? – simonzack

+0

Utilizziamo C# per il linguaggio lato server –

risposta

2

pensare a questo,

var data = "/Date(1363807800000)/"; 
var date = new Date(parseInt(data.replace("/Date(", "").replace(")/", ""), 10)); 
var result = date.getFullYear() + "-" + (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-" + (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " " + (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":" + (date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()); 

Quindi, utilizzare questo RegEx per convalidarlo,

/^\ d {4} - \ d { 2} - \e{2} \e{2}:\e{2}:\e{2} $/

Spero che questo aiuti ... :)

1

ho scritto una volta che questo, forse si potresti aggiungere la stringa al tuo json?

var getDate = function() { 
    var date = new Date(); 
    var prefix = "[" 
     + date.getDate() + "." 
     + (date.getMonth() + 1) + "." 
     + date.getFullYear() + " " 
     + date.toString().split(" ")[4] 
     + "]"; 
    return prefix; 
}; 
2

Ecco una soluzione che utilizza Json.NET (è possibile installarlo tramite NuGet):

object testObject = new { Name = "TestName", DateTime = DateTime.Now }; 
string output = JsonConvert.SerializeObject(testObject, new IsoDateTimeConverter()); 
Console.Write(output); 

uscita:

"{\" Nome \ ": \" TestName \ "\ "DateTime \": \ "2013-07-21T15: 01: 56,2,872469 millions + 03: 00 \"}"

Nel caso in formato ISO DateTime non funziona bene per voi, c uno scriva il proprio DateTimeConverter da usare con la funzione SerializeObject.

Problemi correlati