NodaTime JSON.net 序列化程序不使用ISO8601 时间间隔格式来表示开始和结束时刻是否有原因?
ISO8601 时间间隔示例:
"2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"
NodaTime 复杂 JSON:
{ Start: "2007-03-01T13:00:00Z", End: "2008-05-11T15:30:00Z" }
ISO8601 格式是否不适合 NodaTime 中的间隔概念?
NodaTime JSON.net 序列化程序不使用ISO8601 时间间隔格式来表示开始和结束时刻是否有原因?
ISO8601 时间间隔示例:
"2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"
NodaTime 复杂 JSON:
{ Start: "2007-03-01T13:00:00Z", End: "2008-05-11T15:30:00Z" }
ISO8601 格式是否不适合 NodaTime 中的间隔概念?
NodaTime JSON.net 序列化程序不使用 ISO8601 时间间隔格式来表示开始和结束时刻是否有原因?
是的。我在阅读 ISO-8601 时没有发现它。这不是一个很好的理由,但它是正确的。
ISO8601 格式是否不适合 NodaTime 中的间隔概念?
不,它非常适合(与 ISO-8601 的其余部分一样好),我们绝对应该使用它。我不认为ISO-8601 规定开始是包容的,结束是排他的,但这不是问题。
我怀疑我们想要使用的格式是扩展的ISO 格式,包含亚秒值,与其他所有内容一致,但我怀疑这种扩展相当普遍。
在配置 JSON 序列化程序时,我们需要将其作为一个选项,这有点麻烦,但我们绝对应该让它可用。
我已经打开了功能请求 270来解决这个问题。
我将对此做出与乔恩稍有不同的回应。我欢迎任何反驳。
NodaTime JSON.net 序列化程序不使用 ISO8601 时间间隔格式来表示开始和结束时刻是否有原因?
是的。通过将间隔的起点和终点保持为单独的值,它们可以由任何 JSON 解析器单独寻址。由于间隔的每个瞬间都以 UTC 表示(以“Z”结尾),因此它们也可以单独排序。
这使得在基于 JSON 的数据库中执行范围查询变得非常容易,例如在RavenDB中。(另见RavenDB-NodaTime)
它还允许快速计算有效性(开始 <= 结束)和持续时间(结束开始),而无需打破 JSON 并拆分字符串。
ISO 间隔格式可以在这里工作,但从 JSON 的角度来看它并不方便。
ISO8601 格式是否不适合 NodaTime 中的间隔概念?
非常适合野田时间。它不适合 JSON。我希望Interval.ToString()
Noda Time 的相关文本模式将使用 ISO 格式。如果他们不这样做,那么在未来的版本中还有一些工作要做。