【问题标题】:How to represent date and/or time information in JSON?如何在 JSON 中表示日期和/或时间信息?
【发布时间】:2008-09-18 10:13:37
【问题描述】:

JSON 文本 (RFC 4627) 可以明确表示对象、数组、字符串、数字、布尔值(字面意思是 truefalse)和 null。但是,它没有定义任何时间信息,如日期和时间,这在应用程序中很常见。考虑到RFC 4627 中规定的约束和语法,目前在 JSON 中表示时间的方法是什么?

受访者注意事项:此问题的目的是记录已知流通的各种方法以及示例和相对优缺点(最好来自现场经验)。

【问题讨论】:

    标签: json data-formats


    【解决方案1】:

    我在使用中看到的唯一表示(虽然,诚然,我的经验仅限于 DOJO)是 ISO 8601,它工作得很好,几乎代表了你能想到的任何东西。

    例如,您可以访问上面的链接。

    优点:

    • 代表了几乎所有你可以扔给它的东西,包括时间跨度。 (即 3 天 2 小时)

    缺点:

    • 嗯...我实际上不知道。除了可能需要一点时间来适应?如果没有内置函数来解析它,它当然很容易解析。

    【讨论】:

      【解决方案2】:

      ISO 8601 似乎是一个自然的选择,但如果你想用在浏览器中运行的 JavaScript 来解析它,你将需要使用一个库,因为浏览器支持部分可以解析 ISO 8601 日期的 JavaScript Date 对象不一致,即使在相对较新的浏览器中也是如此。 ISO 8601 的另一个问题是它是一个庞大而丰富的标准,并且日期/时间库仅支持其中的一部分,因此您必须选择您使用的库支持的 ISO 8601 子集。

      相反,我将时间表示为 自 1970-01-01T00:00Z 以来的毫秒数。在更老的浏览器中,Date 对象的构造函数可以理解这一点,至少可以追溯到 IE7(这是我测试过的最古老的)。

      【讨论】:

        【解决方案3】:

        没有固定的文字,因此请使用对您来说最简单的文字。对于大多数人来说,这要么是 UTC 输出的字符串,要么是以 UTC 为中心的时间码的长整数。

        阅读本文了解更多背景知识:http://msdn.microsoft.com/en-us/library/bb299886.aspx

        【讨论】:

          【解决方案4】:

          我推荐使用RFC 3339 格式,它既美观又简单,并且被越来越多的语言、库和工具所理解。

          不幸的是,RFC 3339、Unix 纪元时间和 JavaScript 毫秒时间仍然不够准确,因为它们都没有考虑闰秒!在某些时候,我们都将不得不再次重新审视时间表示。也许下次我们可以完成它。

          【讨论】:

            【解决方案5】:

            很抱歉对这样一个老问题发表评论,但在随后的几年中,出现了更多的解决方案。

            在 JSON 中表示日期和/或时间信息是在 JSON 中表示复杂类型和复杂数据结构的更普遍问题的一个特例。使问题变得棘手的部分原因是,如果您将复杂类型(如时间戳)表示为 JSON 对象,那么您需要有一种表达关联数组和对象的方式,这恰好看起来像您的时间戳的 JSON 对象表示,就像其他一些标记的对象。

            Google 的 protocol buffers 有一个 JSON mapping,它具有时间戳类型的概念,具有定义的语义。

            MongoDB 的BSON 有一个Extended JSON,上面写着{ "$date": "2017-05-17T23:09:14.000000Z" }

            除了日期时间之外,两者还可以表达更复杂的结构。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-11-27
              • 2017-03-18
              • 1970-01-01
              • 2015-10-17
              • 2020-05-19
              • 1970-01-01
              • 1970-01-01
              • 2013-03-05
              相关资源
              最近更新 更多