2015-02-23 116 views
5

我该如何解析这样的字符串:“2015/2/20 9:54:02 AM”到DateTime实例?如何将包含AM/PM的字符串转换为DateTime?

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

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

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

+2

https://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx – Ako 2015-02-23 11:02:27

回答

11

,则应该更换小时格式(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在候选字符串中。

4

可以使用tt符:

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

但是被警告这可能是特定于语言环境。另外HH是指24小时制,上午/下午你通常使用12小时制,所以你想要使用hh或者只是h

+0

此功能不带2个参数 – Fazal 2016-10-13 10:30:20

+0

@法扎尔你是对的。固定。 – Lloyd 2016-10-13 10:54:18

2

试试这个,

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