1

我有一個ASP.NET WebAPI實現,我允許客戶端使用並請求HTTP響應的XML或JSON格式。一些響應對象包括日期/時間值。我已經使用類似的代碼已經成功地讓JSON響應包括適當的ISO 8601格式的日期(包括UTC時間偏移):ASP.NET WebAPI XmlFormatter缺少日期的UTC抵消

Dim json As JsonMediaTypeFormatter = _ 
    GlobalConfiguration.Configuration.Formatters.JsonFormatter 
json.SerializerSettings.DateFormatHandling = _ 
    Newtonsoft.Json.DateFormatHandling.IsoDateFormat 
json.SerializerSettings.DateTimeZoneHandling = _ 
    Newtonsoft.Json.DateTimeZoneHandling.Local 

的JsonFormatter現在給了我這樣一個日期:

2008-11-03T14:14:00-05:00 

然而,情況下,XMLFormatter讓我像一個日期:

2008-11-03T14:14:00 

通知失蹤UTC時間偏移( 「-05:00」)。如何讓XMLFormatter爲我提供UTC時間偏移量?

回答

1

我相信我只是想出了自己。

從SQL Server數據庫(使用IDataReader)和企業庫數據塊中讀取日期時,我需要使用Date.SpecifyKind方法來告訴從數據庫中檢索什麼樣的日期。

Dim dateCreated As Date = _ 
    Date.SpecifyKind(CDate(dbReader("DateCreated")), DateTimeKind.Local) 

通過這樣做,我也能夠刪除我原來的問題中指定的JsonMediaTypeFormatter行。所以,現在XML和JSON發送日期爲:

2008-11-03T14:14:00-05:00 

上Date.SpecifyKind的更多信息可以在這裏找到: http://msdn.microsoft.com/en-us/library/bb546101.aspx