关于c#:有没有办法在JSON中更改日期时间格式?

Is there any way to change date time formatting in JSON?

我正在使用JSON向客户机发送数据。但是,日期字段会转换为时间跨度格式,如/Date(1363807800000)/

有没有办法摆脱它,让服务器向客户机发送DateTime值(如2013/7/21 3:44 PM)?


下面是一个使用json.net的解决方案(您可以通过nuget安装它):

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

输出:

"{\"Name\":\"TestName\",\"DateTime\":\"2013-07-21T15:01:56.2872469+03:00\"}"

如果iso-datetime格式不适合您,您可以编写自己的datetimeconverter来与serializeobject函数一起使用。


想想这个,

1
2
3
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());

然后,使用这个regex来验证它,

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

希望这有帮助…:)


我写过一次,也许你可以把这个字符串添加到你的JSON中?

1
2
3
4
5
6
7
8
9
10
var getDate = function() {
    var date = new Date();
    var prefix ="["
        + date.getDate() +"."
        + (date.getMonth() + 1) +"."
        + date.getFullYear() +""
        + date.toString().split("")[4]
        +"]";
    return prefix;
};