我的应用程序有一个DateTime选择器控件,以这种格式发送选定的日期:“2017年3月1日星期三”,在服务器端我正在做Convert.ToDateTime(“2017年3月1日星期三”)。 随着一切日期一直到今天这个工作正常,但与“2017年3月1日星期三”它抛出无效格式异常。 那是为什么?
答案 0 :(得分:1)
您需要使用ParseExact
或TryParseExact
并指定以下格式:
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.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));