2017-03-01 72 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)); 
相關問題