指定WCF数据服务的日期时间格式

时间:2012-07-11 23:04:59

标签: asp.net datetime wcf-data-services odata datetime-format

有没有办法指定WCF数据服务返回的DateTime数据的格式?

This question似乎表示默认格式(看起来像/Date(1339515455030)/)是自UTC 1970年1月1日午夜以来的毫秒数。如果必须的话,我可以弄清楚如何解析,但我宁愿指定更友好的格式。

3 个答案:

答案 0 :(得分:1)

OData DateTime格式(假设您尚未将其格式化为字符串)取决于客户端和服务器之间协商的有线格式。上面的格式来自JSON Verbose,对应于标准的JavaScript Date对象。 Atom format是不同的,JSON Light仍然不同。特别值得注意的是,我们决定放弃传统的JavaScript日期格式,转而使用ISO 8601作为JSON Light。在任何这些情况下,如果您使用的是客户端,例如WCF DS客户端或data.js,客户端将负责正确地反序列化该值。

  • Atom格式化日期:<d:OrderDate m:type="Edm.DateTime">1996-07-04T00:00:00</d:OrderDate>
  • JSON详细格式化日期:"OrderDate":"\/Date(836438400000)\/"
  • JSON灯光格式化日期:"ShippedDate":"1996-07-16T00:00:00"

有关各种平台上的当前客户端库,请参阅此处:http://www.odata.org/libraries

答案 1 :(得分:1)

使用OData V3,JSON Verbose格式使用ISO 8601,这似乎对某些消费者更友好。请注意,它仅在有效载荷为V3时使用。因此,您需要将服务器端更新为超级OData V3(如果是WCF DS,那么您希望使用WCF DS 5.0版本,例如可以在NuGet http://blogs.msdn.com/b/astoriateam/archive/2012/05/18/wcf-data-services-5-0-1-released.aspx上找到)。

一旦有了这些,您可能需要强制服务器在响应有效负载中使用V3,因为默认情况下它将使用响应的最低版本。这可以通过发送MinDataServiceVersion:3.0来完成;标题来自客户端的请求。

此后,即使是JSON Verbose有效负载也应使用ISO日期时间格式。

答案 2 :(得分:0)

我相信你应该能够将发送回的字符串值反馈到datetime.parse(http://msdn.microsoft.com/en-us/library/1k1skd40.aspx)并且不必担心其余的

以下是一个示例用法:http://www.dotnetperls.com/datetime-parse