为什么Datetime.ParseExact不起作用

时间:2015-04-09 12:06:51

标签: c# string datetime

我正在尝试解析以下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

然而,编译器会抛出错误。我哪里错了?

2 个答案:

答案 0 :(得分:8)

hh specifier适用于12-hour clock格式,需要0112,您需要使用HH specifier格式,24-hour clock格式需要0023

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有点奇怪。你确定那是你想做的吗?