Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将日期字符串转换为日期时间_C#_Datetime_Type Conversion - Fatal编程技术网

C# 无法将日期字符串转换为日期时间

C# 无法将日期字符串转换为日期时间,c#,datetime,type-conversion,C#,Datetime,Type Conversion,我有一个字符串: string test="September 9th, 2015" 我需要将其转换为日期时间格式,因此我尝试: DateTime dt= Convert.ToDateTime(test); 并获得异常(字符串未被识别为有效的DateTime)。我想可能是因为那天之后的“th”。有没有一种简单的方法可以将此字符串转换为DateTime?使用此方法,因为您正在解析一个字符串,而不是转换它 DateTime dt = DateTime.ParseExact(test, "MMMM

我有一个字符串:

string test="September 9th, 2015"
我需要将其转换为日期时间格式,因此我尝试:

DateTime dt= Convert.ToDateTime(test);

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

使用此方法,因为您正在解析一个字符串,而不是转换它

DateTime dt = DateTime.ParseExact(test, "MMMM d\"th\", yyyy")

更多信息可在此处找到

尝试DateTime。在这里,您还可以传递格式字符串。

尝试此函数

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

}
呼叫使用

DateTime dt= ParseDate(test);

可能解决方案还应该解决第1个或第2个、第3个的问题。最有可能是
th
。您可以尝试删除数字后面的
st | nd | rd | th
。您可以通过接受格式字符串数组的重载来简化这一点:您可能应该抛出FormatException而不是InvalidOperationException。我认为使用
CultureInfo.InvariantCulture
可能比实例化
new更可取CultureInfo(“en-US”)
-出于性能原因和确保不同机器上行为一致的考虑。@Dai InvariantCulture可能会执行得更好,但en-US也会在不同机器上保持一致。这也会引发异常。解析该字符串需要一种格式。哦,没有看到th,很抱歉,您拼写错误了
ParseExact
,也应该更新链接。