C# 将结果字符串datetime转换为datetime值

C# 将结果字符串datetime转换为datetime值,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我通过xml获取datetime值,如: string time = "20150605020247+0000" 我想转换成日期时间值。我尝试使用DateTime.Parse,Parse精确,Convert.ToDateTime。它不工作,返回错误: 字符串未被识别为有效的日期时间 您应该能够使用DateTime.ParseExact,因为您知道字符串的确切格式。如果我们假设它是年、月、日、小时、分钟、秒和偏移量,那么您可以执行如下操作: var result = DateTime.Parse

我通过xml获取datetime值,如:

string time = "20150605020247+0000"
我想转换成日期时间值。我尝试使用
DateTime.Parse
Parse精确
Convert.ToDateTime
。它不工作,返回错误:

字符串未被识别为有效的日期时间


您应该能够使用
DateTime.ParseExact
,因为您知道字符串的确切格式。如果我们假设它是年、月、日、小时、分钟、秒和偏移量,那么您可以执行如下操作:

var result = DateTime.ParseExact("20150605020247+0000", "yyyyMMddHHmmsszzz", 
    CultureInfo.InvariantCulture);

您应该像这样使用
DateTime.ParseExact

DateTime theTime = DateTime.ParseExact(time,  "ddMMyyyyHHmmss+ffff,CultureInfo.InvariantCulture);

您需要在ParseExact方法中使用exact格式说明符

DateTime.ParseExact("20150605020247+0000", "yyyyMMddHHmmsszzz", System.Globalization.CultureInfo.InvariantCulture);
小提琴:

编辑:

请检查.NET world:中使用的标准日期时间格式,并检查数据源字符串日期的生成方式。
但是,字符串的“+#####”部分很可能是本地日期UTC偏移量,而不是时间的分数部分(如其他答案所示)。因此,使用“yyyymmddhhmmssfff”解析日期将产生错误的结果

请显示您尝试了什么
ParseExact
,因为这应该可以工作……如果您能分享您迄今为止的进展,那将是非常棒的。感谢您的回复,实际上我尝试了ParseExact,但是它不工作。DateTime theTime=DateTime.ParseExact(time2,“yyyy-MM-dd”,CultureInfo.InvariantCulture,datetimestyle.None);请将代码放入问题中。@Siddarthvarenesh-正如您可能知道的,
“yyyy-MM-dd”
不是您所拥有的值的精确格式。请小心!!加号后面的数字很可能是UTC偏移量(“zzz”说明符),而不是分数(“ffff”说明符)。分数通常用点符号分隔;由加号偏移的本地时间。有关正确的格式说明符,请参见我的答案:仍然不完全正确。您需要3z('zzzz'格式不存在),并且需要大写HH表示小时,否则解析将在12小时以上崩溃。参见Thanke@Jan我应该记住大写字母
H
24小时。由于某种原因,4
z
有效,但我将其改为3.)