c# – 无法使用Datetime.ParseExact转换dateTime字符串

这是我的确切字符串:18-2-2014 00:00:00

我的代码碰到了这个错误:

An unhandled exception of type ‘System.FormatException’ occurred in
mscorlib.dll

Additional information: String was not recognized as a valid DateTime.

在这一行:

newDateTime = DateTime.ParseExact(
                        part[0],
                        "dd-mm-jjjj hh:mm:ss", 
                        CultureInfo.InvariantCulture
                        ); //I tried a couple of time string variations, but it should be the above or "dd-m-jjjj hh:mm:ss".

我究竟做错了什么?

最佳答案
mm specifier是分钟.使用
M specifier,这是几个月(1到12).

hh格式为01至12(12小时制).它没有00小时.这就是为什么你应该使用HH格式,即00到23(24小时制).

并且没有jjjj日期和时间格式说明符,我认为你想使用yyyy格式.

var s = "18-2-2014 00:00:00";
var date = DateTime.ParseExact(s,
                              "dd-M-yyyy HH:mm:ss",
                               CultureInfo.InvariantCulture);
Console.WriteLine(date);

输出将是;

2/18/2014 12:00:00 AM

这是demonstration.

有关更多信息,请查看;

> Custom Date and Time Format Strings

注意:作为Jeppe Stig Nielsen pointed,由于我们完全不知道你的文化(可以是nl-BE或nl-NL),你的ShortDatePattern天不是dd.

这就是为什么你可能需要使用d格式代替dd.

点赞