你的主要问题是,字符串的时区不能使用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