2013-07-21 11 views
5

Używam JSON do wysyłania danych do klienta. Jednak pola daty zostają przekształcone w format przedziałów czasowych, taki jak /Date(1363807800000)/.Czy istnieje sposób na zmianę formatowania daty w JSON?

Czy mimo to można się go pozbyć i pozwolić serwerowi wysłać do klienta wartości DateTime, takie jak 2013/7/21 3:44 PM?

+0

co jest nie tak z JSON fmt? –

+0

Jakiego języka programowania serwera używasz? – simonzack

+0

Używamy C# dla języka po stronie serwera –

Odpowiedz

2

myśleć o tym,

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()); 

Następnie użyć tego wyrażenia regularnego, aby go zatwierdzić,

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

Nadzieja to pomaga ... :)

1

Pisałem kiedyś to może ty czy mógłbyś dodać ciąg do swojego jsona?

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

Oto rozwiązanie przy użyciu Json.NET (można go zainstalować poprzez Nuget):

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

wyjściowy:

"{\" Nazwa \ ": \" TestName \ "\ "DateTime \": \ "2013-07-21T15: 01: +56,2872469 + 03: 00 \"}"

W przypadku formatu ISO DateTime nie działa dobrze dla ciebie, c Napisz swój własny DateTimeConverter do użycia z funkcją SerializeObject.

Powiązane problemy