无法将日期字符串转换为DateTime

Cod*_*ess 2 c# datetime type-conversion

我有一个字符串:

string test="September 9th, 2015"
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为DateTime格式,所以我试过:

DateTime dt= Convert.ToDateTime(test);
Run Code Online (Sandbox Code Playgroud)

并获得异常(String未被识别为有效的DateTime).我想这可能是因为"th"在一天之后.有没有一种简单的方法将此字符串转换为DateTime?

aru*_*lam 6

试试这个功能

private static DateTime ParseDate(string date)
{
   string[] formats =
        {
            "MMMM d\"st\", yyyy",
            "MMMM d\"nd\", yyyy",
            "MMMM d\"rd\", yyyy",
            "MMMM d\"th\", yyyy"
        };
    DateTime dt;
    if (DateTime.TryParseExact(date, formats, CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
    {
            return dt;
    }

    throw new InvalidOperationException("Invalid Input");

}
Run Code Online (Sandbox Code Playgroud)

打电话使用

DateTime dt= ParseDate(test);
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用接受格式字符串数组的重载来简化它:https://msdn.microsoft.com/en-us/library/h9b85w22(v = vs.110).aspx (5认同)
  • 您可能应该抛出FormatException而不是InvalidOperationException. (2认同)