有没有办法在JSON中更改日期时间格式?

时间:2013-07-21 11:18:13

标签: c# javascript json datetime

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

有没有摆脱它,让服务器向客户端发送DateTime 2013/7/21 3:44 PM这样的值?

3 个答案:

答案 0 :(得分:1)

想一想,

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验证它,

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

希望这有助于......:)

答案 1 :(得分:1)

这是使用Json.NET的解决方案(您可以通过NuGet安装它):

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

输出:

  

&#34; {\&#34;名称\&#34;:\&#34;测试名\&#34; \&#34;日期时间\&#34;:\&#34; 2013 -07-21T15:01:56.2872469 + 03:00 \&#34;}&#34;

如果ISO DateTime格式不适合您,您可以编写自己的DateTimeConverter以与SerializeObject函数一起使用。

答案 2 :(得分:0)

我写了一次,也许你可以把字符串添加到你的json?

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