C# 解析自定义日期时间格式

C# 解析自定义日期时间格式,c#,.net,parsing,datetime,C#,.net,Parsing,Datetime,我必须使用yyyyMMddhhmmss格式从字符串中解析DateTime对象 如果我运行此代码,它可以正常工作: DateTime y = new DateTime(2013, 07, 22, 15, 35, 23); string x = y.ToString("yyyyMMddhhmmss", CultureInfo.InvariantCulture); 但如果我运行这段代码(看起来是相反的操作),我会得到一个异常: string x = "20130722153523"; DateTim

我必须使用
yyyyMMddhhmmss
格式从字符串中解析
DateTime
对象

如果我运行此代码,它可以正常工作:

DateTime y = new DateTime(2013, 07, 22, 15, 35, 23);
string x = y.ToString("yyyyMMddhhmmss", CultureInfo.InvariantCulture);
但如果我运行这段代码(看起来是相反的操作),我会得到一个异常:

string x = "20130722153523";
DateTime y = DateTime.ParseExact(x, "yyyyMMddhhmmss", CultureInfo.InvariantCulture);
例外情况是:

System.FormatException: String was not recognized as a valid DateTime.
我不知道这里出了什么问题。我做错了什么


注意:不要担心时区。我可以在以后处理获取正确时区的问题。

问题是,您指定的日期时间格式使用
hh
作为12小时时间格式,但输入字符串在该区域中有
15
。它无法分析此内容,因为15超出了预期范围

尝试使用
HH
作为24小时时间格式:

string x = "20130722153523";
DateTime y = DateTime.ParseExact(x, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
进一步阅读:


直接来自MSDN:如果格式是不包含日期或时间分隔符(如“yyyyMMdd HHmm”)的自定义格式模式,请使用提供程序参数的不变区域性以及每个自定义格式说明符的最宽形式。例如,如果要在格式模式中指定小时,请指定较宽的形式“HH”,而不是较窄的形式“H”。+1。另请检查:-(引号)调用方注意:在.NETFramework4中,如果要分析的字符串包含不一致的小时组件和AM/PM指示符,则ParseExact方法会引发FormatException。在.NET Framework 3.5和早期版本中,AM/PM指示符被忽略。(/quote)关于如何使其理解
“12-Sep-2015 08:12:54 UTC”
的结尾部分或任何位置而不是UTC的任何想法?在第一个代码示例中,x是20130722033523,而不是2013072153523