我正在使用c#,如果我这样做
DateTime.ParseExact("4/4/2010 4:20:00 PM", "M'/'d'/'yyyy H':'mm':'ss' 'tt", null)
返回值总是凌晨4:20 - 使用tt我做错了什么?
谢谢!
答案 0 :(得分:62)
将小时格式(H
)设为小写,如下所示:
DateTime.ParseExact(
"4/4/2010 4:20:00 PM",
"M/d/yyyy h:mm:ss tt",
CultureInfo.InvariantCulture);
大写“H”表示24小时时间,小写“h”表示12小时时间,并且将尊重候选字符串中的AM / PM。
旁注:最好为这样的方法提供IFormatProvider
的实例(即使它只是CultureInfo.InvariantCulture
)。这是在你遇到问题之前并不重要的事情之一,因此养成指定文化信息的习惯会很好。
答案 1 :(得分:3)
尝试以下方法:
Console.WriteLine(DateTime.ParseExact("4/4/2010 4:20:00 PM", "M'/'d'/'yyyy h':'mm':'ss tt", null));
输出:
4/4/2010 4:20:00 PM
答案 2 :(得分:2)
您需要在格式字符串中使用小写“h”作为小时参数。大写“H”代表24小时时间,因此“4”被识别为凌晨4点(因为“16”将是下午4点)。
DateTime.ParseExact("4/4/2010 4:20:00 PM", "M/d/yyyy h:mm:ss:tt", null)