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
,也应该更新链接。