2017-03-01 46 views
0

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

+0

检查:http://stackoverflow.com/questions/18961520/why-datetime-parseexactstring-string-iformatprovider-need-the -iformatprovide –

+0

请标记正确的答案,并upvote有用的答案! – Sameer

回答

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格式解析日期总是一个更好的主意,这样您就可以支持跨多种文化的应用程序。

0

试试这个代码

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