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

C# 如何将包含AM/PM的字符串转换为DateTime?,c#,C#,如何将这样的字符串:“2/22/2015 9:54:02 AM”解析为DateTime实例 我目前正在使用DateTime.ParseExact方法,但没有am/PM i、 e: 我也希望能够解析AM/PM符号。您可以使用tt说明符: DateTime.ParseExact( "2/22/2015 9:54:02 PM", "M/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture ) 但是,请注意,这可能是特定于区域设置

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

我目前正在使用DateTime.ParseExact方法,但没有am/PM i、 e:


我也希望能够解析AM/PM符号。

您可以使用
tt
说明符:

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

但是,请注意,这可能是特定于区域设置的。另外,
HH
指的是24小时制,在AM/PM时,您通常使用12小时制,因此您可以使用
HH
或仅使用
h

您应该将小时格式(
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。

试试这个

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

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);

此函数不接受2个参数
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);