我正在尝试解析以下09/04/2015 17:22:29.183 PM
代码如下:
string s = "09/04/2015 17:22:29.183 PM";
DateTime.ParseExact(s,Constants.DateTimeFormat,System.Globalization.CultureInfo.InvariantCulture);
DateTimeFormat
的格式为dd/MM/yyyy hh:mm:ss.fff tt
然而,编译器会抛出错误。我哪里错了?
答案 0 :(得分:8)
hh
specifier适用于12-hour clock格式,需要01
到12
,您需要使用HH
specifier格式,24-hour clock格式需要00
至23
。
string s = "09/04/2015 17:22:29.183 PM";
DateTime dt;
if(DateTime.TryParseExact(s, "dd/MM/yyyy HH:mm:ss.fff tt", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
dt.Dump(); // 09.04.2015 17:22:29
}
但另一方面,AM或PM指示符用于12小时时钟格式。这就是为什么没有17 PM或17 AM这样的事情。
答案 1 :(得分:3)
您需要使用HH
代替hh
。
当然,同时使用HH
和 tt
有点奇怪。你确定那是你想做的吗?