【问题标题】:Timespan/Edm.Time format in ODataOData 中的时间跨度/Edm.Time 格式
【发布时间】:2015-07-31 03:26:43
【问题描述】:

Edm.Time 使用的正确格式是什么?

我在协议文档中看到 DateTime 和 DateTimeOffset 的格式如下:

日期时间:“yyyy-MM-dd'T'HH:mm:ss.fff” DateTimeoffset : "yyyy-MM-dd'T'HH:mm:ss.fffZ"

我确实在此处检查了协议:http://www.w3.org/TR/xmlschema-2/,但无法获得用于 Edm.Time 的格式。 目前我们正在使用 XmlConvert.ToString 将时间跨度值转换为字符串表示形式。 OData 是否有针对时间跨度推荐的任何特定表示?

【问题讨论】:

  • 如果你能分享你的工作,我很好奇 - 你可以通过我的博客 (bitwhys.com) 联系我。

标签: odata ado.net-entity-data-model


【解决方案1】:

格式应该有合理的记录here,它指向this link(在Edm.Time的情况下)。

来自 XML 模式 2:

3.2.8.1 词法表示

时间的词法表示是左截断词法 dateTime 的表示形式:hh:mm:ss.sss,带有可选的以下时间 区域指示器。例如,为东部标准指示下午 1:20 比世界协调时间 (UTC) 晚 5 小时的时间,1 会写:13:20:00-05:00。另请参阅 ISO 8601 日期和时间格式 (§D)。

请注意,时间和日期土地多年来一直存在问题。日期格式因有效负载格式和版本而异。例如,JSON Verbose 对 OData v2 使用 /Date(...)/ 格式,但在 OData v3 中更改为 ISO 8601(对于那些不必实现 OData 服务器并关心所有这些细微差别)。这类似于 ASP.NET 堆栈所经历的困境:http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

【讨论】:

  • 时间格式仅限于单个 24 小时时段(00:00:00 到 23:59:59)。您将如何表示涵盖数天、数周或数年的 TimeSpan? 3:00:00:00 是 3 天时间跨度的文本表示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
相关资源
最近更新 更多