使用自定义DateTimeFormatInfo的DateTime.Parse会引发异常

Kon*_*ski 2 c# datetime parsing formatexception iformatprovider

为什么这段代码会抛出异常?

var dateTime = "2012-03-21_15.12";
var format = new DateTimeFormatInfo()
{
   FullDateTimePattern = "yyyy-MM-dd-HH_mm.ss"
};

// FormatException: String was not recognized as a valid DateTime.
var parse = DateTime.Parse(dateTime, format); 
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 6

您的格式字符串和日期字符串不匹配.

您似乎忘记了日期字符串中的小时或分钟部分.

这个:

 var dateTime = "2012-03-21_15.12";
Run Code Online (Sandbox Code Playgroud)

应该看起来像:

var dateTime = "2012-03-21-15_54.12";
Run Code Online (Sandbox Code Playgroud)

我建议使用DateTime.ParseExact:

DateTime.ParseExact("2012-03-21-16_15.12", 
        "yyyy-MM-dd-HH_mm.ss", 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.None)
Run Code Online (Sandbox Code Playgroud)