【问题标题】:JSON Parse Date Formats?JSON解析日期格式?
【发布时间】:2010-06-17 17:34:27
【问题描述】:

假设我必须手动将 Json 编码的日期字符串转换为客户端代码中的日期对象,我是否正确?

来自 C#,我想当然地认为这是自动发生的,但我猜那是 .NET。

是否有从 Json 字符串(日期、整数等)获取原生 javascript 类型的内置机制?

谢谢。

【问题讨论】:

  • 斯科特,是的,这很可悲,但确实如此。不过不用担心,JavaScript 编程仍然比 .Net 好 10 倍。

标签: javascript json date


【解决方案1】:

JSON 规范没有定义日期数据类型。这由您决定。

参见第 A.8 节:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

【讨论】:

  • ...这让我很伤心...确实很伤心... :(
【解决方案2】:

JSON 没有标准日期类型。有各种库(包括 .NET)具有不兼容的扩展来表示它。

【讨论】:

    【解决方案3】:

    请参阅Stand-Alone JSON Serialization on msdn,它提供了有关 MS 实施的文档

    【讨论】:

      【解决方案4】:

      自动将 ISO 和 Asp.net 日期日期字符串转换为日期

      如果您使用任何客户端库,如 jQuery,您可以使用我的 jQuery 扩展,它可以使用 $.parseJSON() 自动将 ISO 日期和 Asp.net 日期转换为实际日期。

      检查my blog post 的代码。

      【讨论】:

        【解决方案5】:

        JSON.parse() 支持替换参数。

        JSON.stringify(value[, replacer[, space]])
        

        details on MDN

        所以你可以在json中轻松处理日期类型。

        function replacer(key, value) {
          return key == "date1" || key == "date2" ? new Date(value) : value;
        }
        
        var obj = {
            date1:"5/21/2012 4:49:17 PM",
            date2:new Date()
        }
        var jsonString = JSON.stringify(obj);
        console.log(jsonString);
        var jsonObj = JSON.parse(jsonString, replacer);
        console.log(jsonObj);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-10
          • 2017-01-19
          • 1970-01-01
          • 2016-05-17
          • 2021-07-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多