試試這個:
string ReceivedDateTimeString = "2012-10-09T07:42:13.409191Z";
DateTime TransformedReceivedDateTimeString =
DateTime.ParseExact(ReceivedDateTimeString,
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'FFFFFFFK",
CultureInfo.InvariantCulture,
DateTimeStyles.RoundTripKind);
documentation for the "o" format specifier指出:
的 「O」 或 「o」 標準格式說明對應於「YYYY ' - ' MM ' - ' dd'T'HH ':' 毫米 ':' SS'。 'fffffffK'爲DateTime值和「yyyy' - 'MM' - 'dd'T'HH'自定義格式字符串:'mm':'ss'。'fffffffzzz'用於DateTimeOffset值的自定義格式字符串。
I.e. 7位小數,而不是像你的字符串中的6。
格式化的字符串可以由如果風格參數設置爲DateTimeStyles.RoundtripKind使用DateTimeParse(字符串,的IFormatProvider,DateTimeStyles)或DateTimeParseExact方法被解析回來。
I.e.你需要指定DateTimeStyles.RoundtripKind。
在上面,我已經使用「FFF ...」而不是「fff ...」,因爲這將接受可變數量的小數(缺少尾隨小數被視爲零)。這符合「寬容投入,嚴於產出」的原則。
此外,我指定DateTimeStyles.RoundtripKind來解析時保留Kind屬性(在這種情況下Utc)。如果您不這樣做,結果將被轉換爲當地時間。
來源
2012-10-09 08:27:06
Joe
第2部分是什麼? – Niklas
http://stackoverflow.com/questions/12705874/utc-string-to-datetime-exception - 抱歉不能使用相同的問題標題 – cs0815
恕我直言,downvotes是有點苛刻。這兩個鏈接的問題都沒有給出明確適用於這種情況的答案。 – Joe