【问题标题】:Is there any way to change date time formatting in JSON?有什么方法可以更改 JSON 中的日期时间格式?
【发布时间】:2013-07-20 06:07:05
【问题描述】:

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

有没有办法摆脱它并让服务器将DateTime 值如2013/7/21 3:44 PM 发送给客户端?

【问题讨论】:

  • JSON fmt 有什么问题?
  • 你使用什么服务器编程语言?
  • 我们使用 C# 作为服务器端语言
  • 您遇到了什么问题?你想在哪里使用它? jQuery?

标签: c# javascript json datetime


【解决方案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} $ /

希望这会有所帮助...:)

【讨论】:

    【解决方案2】:

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

    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 函数一起使用。

    【讨论】:

      【解决方案3】:

      我写过一次,也许你可以将字符串添加到你的 json 中?

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

      【讨论】:

        猜你喜欢
        • 2015-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-15
        • 1970-01-01
        • 2020-08-23
        相关资源
        最近更新 更多