你的主要問題是,字符串的時區不能使用DateTime.ParseExact
,因爲它包含引號進行解析。但是,您可以刪除引號以使其可解析。同時,即使這些額外的字符不能解析時間戳,你也可以擺脫領先的D:
。
"D:20170328092616+01'00'".Substring(2).Replace("'", "")
您還應該使用CultureInfo.InvariantCulture
而不是CultureInfo.CurrentCulture
。你不知道後者是什麼,並且可能有文化無法解析時間戳的情況。
請注意,格式特定hh
是12小時格式,我非常確定您想要HH
24小時格式。否則,您需要時間戳中的AM/PM。
把所有這些組合起來,你得到:
DateTime parsedDate = DateTime.ParseExact(
"D:20170328092616+01'00'".Substring(2).Replace("'", ""),
"yyyyMMddHHmmsszzzz",
CultureInfo.InvariantCulture,
DateTimeStyles.None);
你應該知道,那種解析日期是Local
這意味着parsedDate
轉換爲本地時區不管它是什麼(時間戳包含抵消,所以它是明確的)。根據你打算使用解析日期的方式,你可能會更好的解析Utc
。您可以使用DateTimeStyles.AdjustToUniversal
而不是DateTimeStyles.None
。或者,您可以切換到使用DateTimeOffset
而不是DateTime
,這將保留原始偏移(+01:00)。
這對你很好 - 這篇文章是關於什麼的? – BugFinder
@BugFinder試圖瞭解這個fromat,所以我可以得到日期 – asad3dsfd3
但你已經有了字符串概述格式.. – BugFinder