2017年3月1日星期三无效的日期时间字符串格式

时间:2017-03-01 18:50:24

标签: c# string datetime

我的应用程序有一个DateTime选择器控件,以这种格式发送选定的日期:“2017年3月1日星期三”,在服务器端我正在做Convert.ToDateTime(“2017年3月1日星期三”)。 随着一切日期一直到今天这个工作正常,但与“2017年3月1日星期三”它抛出无效格式异常。 那是为什么?

3 个答案:

答案 0 :(得分:1)

您需要使用ParseExactTryParseExact并指定以下格式:

DateTime dt;
if(DateTime.TryParseExact("Wed Mar 01 2017","ddd MMM dd yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
    //invalid date
}

它在您的计算机上失败的原因是由于不支持该格式的文化,否则您的代码应该适用于en-US文化。

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
DateTime dt = Convert.ToDateTime("Wed Mar 01 2017");

确保您的计算机上的文化没有更改。

为了安全起见,使用InvariantCulture格式解析日期总是更好,这样您就可以跨多种文化支持您的应用程序。

答案 1 :(得分:0)

检查DateTime.ParseExact

DateTime.ParseExcact("Wed Mar 01 2017","ddd MMM dd yyyy",CultureInfo.InvariantCulture);

答案 2 :(得分:0)

试试此代码

var date = "Wed Mar 01 2017";
Console.WriteLine(DateTime.ParseExact(date, "ddd MMM dd yyyy", CultureInfo.InvariantCulture));