2012-07-11 41 views
2

是否有方法指定由WCF數據服務返回的DateTime數據的格式?指定WCF數據服務的日期時間格式

This question似乎是說,默認格式,看起來像/Date(1339515455030)/,是從1970年1月1日午夜開始的毫秒數。我可以想出如何解析,如果我必須,但我寧願指定一個更友好的格式。

回答

1

的OData的DateTime格式(假設你沒有已經格式化它爲一個字符串)是依賴於客戶端和服務器之間協商的有線格式。上面的格式是從JSON Verbose,並對應於一個標準的JavaScript日期對象。 Atom format是不同的,而JSON燈仍然不同。特別值得注意的是,我們決定從傳統的JavaScript日期格式轉向支持JSON Light的ISO 8601。在這些情況中的任何一種情況下,如果您使用的是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

0

我相信你應該能夠提供返回到datetime.parse(http://msdn.microsoft.com/en-us/library/1k1skd40.aspx)的字符串值,而不應該擔心其餘

下面是一個例子用法:http://www.dotnetperls.com/datetime-parse

+0

如果將使用此服務的客戶端不是基於.NET的,該怎麼辦? – 2012-07-11 23:32:18

1

對於OData V3,JSON詳細格式使用ISO 8601,它似乎更適合s消費者。請注意,只有在有效載荷爲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詳細有效負載應使用ISO日期時間格式。