【发布时间】:2012-04-11 17:55:43
【问题描述】:
我刚刚升级到 OData 库的 RTM 版本。我注意到 DateTime 处理中似乎存在不一致的地方,并且想知道是否有人可以解释我可能遗漏的内容,或者实际上是否存在一些问题。除了 RTM 库之外,我还依赖于 2012 年 3 月 30 日版本的 MS-ODATA。
MS-ODATA 以以下格式定义 dateTimeUriLiteral(例如简化):
YYYY-MM-DDTHH:MM:SS.NS 其中 NS 定义为 nanoSeconds=1*7DIGIT
MS-ODATA 将 VJsonDateTime 定义为可怕的 /Date(...)/ 格式。
但是,在详细的 JSON 序列化中使用库时,我们会看到 dateTimeUriLiteral 格式,而不是 VJsonDateTime。此外,反序列化仅接受 dateTimeUriLiteral 格式。这看起来像是规范和实现之间的冲突。
此外,dateTimeUriLiteral 不允许时区偏移(例如 ISO 8601 格式的情况)。然而,当序列化的日期时间对象被指定为 DateTimeKind.Utc 时,我们看到库发出一个“Z”终止字符(UTC 的 ISO 8601)。这看起来也像是规范和实现之间的冲突。
此外,当我们使用库反序列化具有终止“Z”的 dateTimeUriLiteral 时 - 反序列化的对象被标记为 DateTimeKind.Local。无论 UTC 指示符是否存在规范问题 WRT 支持,这看起来都不正确。 “Z”应该导致反序列化失败,或者应该导致时间标记为 UTC(非本地)。
【问题讨论】:
-
嗨,evoskuil - 我们在周五发布了一些预发布版本,我们相信这将有助于解决这个问题 - 您可以试用它们并在博客文章中提供一些反馈吗? blogs.msdn.com/b/astoriateam/archive/2012/04/20/…