如何将包含AM / PM的字符串转换为DateTime?

时间:2015-02-23 10:59:16

标签: c#

我如何解析这样的字符串:“2/22/2015 9:54:02 AM”到DateTime实例?

我目前正在使用DateTime.ParseExact方法但没有AM / PM 即:

 DateTime.ParseExact("2/22/2015 9:54:02", "M/dd/yyyy HH:mm:ss")

我希望能够解析AM / PM标志。

4 个答案:

答案 0 :(得分:27)

您应该将小时格式(H)更改为小写,如下所示:

DateTime.ParseExact("2/22/2015 9:54:02 AM", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

大写“H”表示24小时制,小写“h”表示12小时制,并且会尊重候选字符串中的AM / PM。

答案 1 :(得分:6)

您可以使用tt说明符:

DateTime.ParseExact(
    "2/22/2015 9:54:02 PM",
    "M/dd/yyyy h:mm:ss tt", 
    CultureInfo.InvariantCulture
)

但是请注意,这可能是特定于语言环境的。另外HH指的是24小时制,AM / PM通常使用12小时制,因此您需要使用hhh

答案 2 :(得分:2)

试试这个,

DateTime.ParseExact("2/22/2015 9:54:02 PM", "M/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

答案 3 :(得分:0)

尝试一下:

if (date.Contains("AM") || date.Contains("PM"))
    return DateTime.ParseExact(date, "dd.MM.yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
return DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);