JSON 中 Duration 的好格式是什么?

Muh*_*eed 9 .net time timespan duration iso8601

我意识到 JSON 没有真正的日期格式,考虑到 JavaScript 使用的是 ISO 8601,因此使用 ISO 8601 是一个不错的选择。持续时间呢?JavaScript 没有内置格式。

  1. 我遇到了ISO 8601 持续时间,例如P3Y6M4DT12H30M5S我在野外没有看到太多使用。它看起来也非常冗长且难以阅读。据我所知,如果您需要,它也不支持毫秒。
  2. 我正在使用 C#,其TimeSpan类型输出1.02:03:04.0050000为 1 天、2 小时、3 分钟、4 秒和 5 毫秒。
  3. 我可以使用秒数或毫秒数作为整数。这完全是机器可读的,如果您使用秒或毫秒而不标记值,这并不明显。

我几乎从未见过野外的第一种格式。第二个对我来说似乎更直观,但我担心它在 .NET 之外并不为人所知。第三种格式可能是最跨平台友好的,但完全不是人类可读的。

Vla*_*ykh 9

基本上,持续时间是毫秒数或滴答数(如果您需要更高的精度)。

1 滴答是 100 纳秒。一毫秒有 10,000 个滴答声。

ISO 8601:现有标准

最好的方法是使用您提到的通用标准ISO 8601。它是人类和机器可读的。

什么对你来说更容易阅读和改变?

  • 1036800000毫秒
  • P12D

您可以P1Y2M10DT2H30M以不同的方式使用 ISO 8601 持续时间:

  • 由JavaScript 中的moment.js处理
  • 以 JSON 格式作为string值传递
  • 在 C# 中由NodaTime处理
  • 存储在数据库中

请记住,ISO 8601 也可以解决从夏令时切换到夏令时的问题。

PT36H不一样P1DT12H

Schema.org

互联网上的 schema.org 有不同的结构化数据模式。他们中的一些人正在使用Duration,它应该用 表示ISO 8601 duration format