为什么DateTime.ParseExact()不能在"4/4/2010 4:20:00 PM"使用"M'/'d'/'yyyy H'解析AM/PM:'mm':'ss'' TT"

Jim*_*mmy 30 c# datetime parsing

我正在使用c#,如果我这样做的话

DateTime.ParseExact("4/4/2010 4:20:00 PM", "M'/'d'/'yyyy H':'mm':'ss' 'tt", null)
Run Code Online (Sandbox Code Playgroud)

返回值总是凌晨4:20 - 使用tt我做错了什么?

谢谢!

And*_*are 65

使小时格式(H)小写如下:

DateTime.ParseExact(
            "4/4/2010 4:20:00 PM", 
            "M/d/yyyy h:mm:ss tt", 
            CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

大写"H"表示24小时时间,小写"h"表示12小时时间,并且将尊重候选字符串中的AM/PM.

旁注:最好提供IFormatProvider像这样的方法的实例(即使它只是CultureInfo.InvariantCulture).这是在你遇到问题之前并不重要的事情之一,因此养成指定文化信息的习惯会很好.