2012-07-26 115 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