2011-06-03 169 views
2

如何將1900-01-01 00:00:00Z解析爲DateTime對象?解析日期時間

 string temp = "1900-01-01 00:00:00Z"; 
     CultureInfo provider = CultureInfo.InvariantCulture; 
     var date = DateTime.ParseExact(temp, "yyyy-MM-dd hh:mm:ssZ", provider); 

這將返回我:

1899年12月31日晚上7:00:00點

+3

準確的時間是5個小時。您可能需要考慮時區。 – 2011-06-03 18:59:02

回答

3

您如何顯示值?我懷疑這只是將當地時區應用到日期。

例如,嘗試打印出:

  • date.Year
  • date.Kind
  • date.Hour

我的猜測是,你會看到date實際上一個UTC DateTime與正確的價值。

這是不幸的.NET爲您隱式執行的時區轉換,但隨後在.NET留下點什麼的日期和時間類型無論如何都要所需:(

另一種方法是使用DateTimeOffset這應該它弄得有一點更清晰。

+2

哈!我擊敗了你16秒! – Hogan 2011-06-03 19:00:44

+0

你需要一幀截圖 – tofutim 2011-06-03 19:16:00

4

我猜你是在美國東部時間。這是從時間減去5小時。也許這是因爲你如何打印時間?嘗試在GMT下打印。或者你可以用你當地的時區來解析它。

0

您可以使用此代碼

 DateTime a; 
     var dt = DateTime.TryParse("30/05/1970",out a); 
+0

這將如何幫助? – 2014-05-03 03:07:32

0

默認情況下,給定的時間調整到您的計算機的本地時區。該date.Kind應該反映出這一點。相反,如果喲您希望將時間調整爲世界時(UTC),請使用DateTimeStyles.AdjustToUniversal標誌作爲ParseExact的第四個參數。