2011-10-12 130 views
1

我得到的字符串形式:C#日期時間格式和存儲時區信息

「2011-10-12T11:55:34.803EST」

「2011-10-05T16:58:05.043GMT」

我想將這些值存儲爲DateTime對象,但是一個簡單的DateTime.Parse()不起作用。無論如何,我可以將這些字符串轉換爲DateTime對象嗎?據我所知,DateTime不知道時區。

+1

此帖可能有幫助:http://stackoverflow.com/questions/179940/c-convert-utc-gmt-time-to-local-time –

+0

檢查這個帖子http://stackoverflow.com/questions/ 241789/parse-datetime -with-timezone-of-form-pst-cest-utc-etc –

+1

你爲什麼試圖根據不同的時區存儲時間。如果您要處理數據,則應在單個時區中存儲時間和日期。如果你只是簡單地顯示它,那麼就把它存儲起來就像你一樣,然後用相同的方式顯示它。 –

回答

1

可以以Z取代GMT,也將努力:

string date = "2011-10-05T16:58:05.043GMT".Replace("GMT", "z"); 
Console.WriteLine(DateTime.Parse(date)); 

祖魯時間

+0

謝謝IAbstractDownvoteFactor。使用「EST」的時間如何? – Flack

+0

這很麻煩,因爲EST對.NET沒有任何意義。您可能需要查找表。從技術上講,你可以用-500代替EST,但它仍然可以工作。所以如果你只有GMT和EST,我認爲這是合理的 – Joe

0

+1到IAbstractDownvoteFactor - Z是最好的區。

您的日期時間看起來幾乎像Iso8601,但具有自定義時區(初始信息http://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators)。

使用時區非常困難,因爲它們的規則可能會改變,有些可能會出現並消失。如果您可以影響傳入格式 - 請求時區中的UTC(Z)或絕對偏移量(+08:00)。

否則,您需要找出您需要支持的時區,確定規則是否更改以及是否正確設置了夏令時區域(即適當使用PDT/PST時)。玩的開心。