2012-07-26 65 views
3

Possible Duplicate:
Parse Datetime string解析日期時間使用C#

我試圖解析以下日期時間在C#:

string date = "Wed Jul 25 19:41:36 2012 +0200" 
DateTime result = DateTime.Parse(date); 

而且我發現了以下錯誤:

System.FormatException : String was not recognized as a valid DateTime. 

任何人都知道什麼這裏是問題嗎?

+0

@PeterRitchie定式兩份,如果你忽略的格式,我個人現在回答這3個,但* *技術上的格式已經每一次改變:-) – 2012-07-26 15:44:11

+0

不確定人們爲什麼重複關閉...告訴OP解析字符串*存在*並不回答整個問題。 – 2012-07-26 15:55:33

回答

11

您可以使用DateTime.ParseExact()。例如

更新:

string dateString = "Your date"; 
string format = "ddd MMM dd HH:mm:ss yyyy %K"; 
DateTime dateTime = DateTime.ParseExact(dateString, format, 
       CultureInfo.InvariantCulture); 
Console.WriteLine(dateTime); 

Documentation HereDateTime字符串格式化選項here

You can also view here {Complr.com}

+2

不挑剔,因爲它非常接近,但它不適合OP包含的時區偏移。 – 2012-07-26 15:34:11

+0

我剛剛在一些研究後更新了答案。對不起,第一個。 – 2012-07-26 15:39:10

+1

好的,謝謝,我會接受你的回答,你是第一個...... – 2012-07-26 15:39:44

6

你需要指定解析格式,因爲這是不規範的。 DateTime.ParseExact允許你指定格式。

這樣的事情會起作用 但是我還沒有驗證那個時區部分是否工作正常,似乎在1800時給了我一個日期/時間...... 啊這是因爲我在哪裏它是BST(GMT +1)。

static void Main(string[] args) 
    { 
     string date = "Wed Jul 25 19:41:36 2012 +0200"; 
     string format = "ddd MMM dd HH:mm:ss yyyy %K"; 
     //string format = "ddd MMM dd HH:mm:ss yyyy zzz"; // Also works. 
     DateTime dateTime = DateTime.ParseExact(date, format, CultureInfo.InvariantCulture); 
     Console.ReadLine(); 
    } 

DateTime字符串格式化選項記錄here,您可以創建使用它們的任意組合來分析一個DateTime成功解析字符串。

的另一個例子可以在這裏找到:Parse DateTime From Odd Format