2015-05-06 129 views
1

我有下面的代碼:DateTimeZoneHandling.RoundtripKind不保留日期時間時區

   JsonReader reader = new JsonTextReader(new StringReader(content.ToString())); 
       reader.DateTimeZoneHandling =   DateTimeZoneHandling.RoundtripKind; 
       reader.DateFormatString = "yyyy-MM-dd HH:mm:ss"; 
       reader.DateParseHandling = DateParseHandling.DateTime; 
       myObj = JObject.Load(reader); 

儘管使用DateTimeZoneHandling.RoundtripKind;仍然是轉換爲本地時區的日期。例如:

"2015-02-02T12:01:14.548-0500" 

改爲:

"2015-02-02T11:01:14.548-0500", 
+0

有什麼想法?或建議使用其他方法... – MT467

+0

你可以創建一個[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)重現問題,最好包括最初的JSON?我只是試圖用一個非常簡單的測試用例來重現這一點,而不能。 – dbc

回答

0

據瞭解.NET的問題(more about it

可能的解決方法是使用的DateTimeOffset正確解析日期,然後將其轉換回到DateTime使用方法

static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime) 
{ 
    if (dateTime.Offset.Equals(TimeSpan.Zero)) 
     return dateTime.UtcDateTime; 
    else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime))) 
     return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local); 
    else 
     return dateTime.DateTime; //Kind = Unspecified 
}