C#DateTime.ParseExact抛出格式异常

时间:2010-12-21 20:52:15

标签: c# asp.net-mvc .net-4.0

我正在使用MVC3开发.NET4 Web应用程序。

假设我将以下DateTime作为XML-feed中的字符串。我的应用程序正在读取xml提要,并且我正在循环遍历所有它的后代。我收到的DateTime以下列格式(作为字符串)开始返回;

var myDateTime = "Sun Dec 19 11:45:45 +0000 2010"

我正在使用下面的代码尝试将上面提到的DateTime字符串解析为有效的DateTime格式(最好是荷兰语)

var CorrectDateTime = DateTime.ParseExact(myDateTime , "dd MMM yyyy HH:mm:ss", CultureInfo.InvariantCulture);

当尝试执行此代码时,我正面临一个形成感觉。有人有任何想法吗?

- UPDATE -

这是我在得到各种答案后得到的。尽管如此,仍然会抛出相同的异常。

var correctedDateTime = DateTime.ParseExact(latestTweetTime, "ddd MMM HH:mm:ss K yyyy", CultureInfo.InvariantCulture);
string display = correctedDateTime.ToString("dd MMM yyyy HH:mm:ss");

3 个答案:

答案 0 :(得分:2)

尝试将解析格式更改为:

"ddd MMM HH:mm:ss K yyyy"

如果您希望重新格式化 DateTime,请在解析DateTime.ToString时调用DateTime时指定格式字符串:

string display = CorrectedDateTime.ToString("dd MMM yyyy HH:mm:ss");

答案 1 :(得分:1)

如果您正在尝试阅读此内容: “Sun Dec 19 11:45:45 +0000 2010”

您需要额外的“d”或“dd”,如下所示:

"ddd MMM d HH:mm:ss K yyyy"

"ddd MMM dd HH:mm:ss K yyyy"

取决于输入是否为前缀。

您需要考虑输入字符串的每一部分,以下是MSDN中不同组件的摘要:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

ddd = Three letter Day of week
MMM = Three letter month
dd = Two digit day of month 01-31  (use "d" for 1-31)
HH = Hours using 24-hour clock. 00-24  (use "H" for 0-24)
mm = Minutes. 00-59
ss = Seconds. 00-59
K = Time zone information
yyyy = 4-digit year

答案 2 :(得分:0)

根据您指定的日期(假设时间为24小时),您的输入格式字符串应为:

ddd MMM d H:mm:ss K yyyy. 
Sun Dec 19 11:45:45 +0000 2010

所以:

var correctedDateTime = DateTime.ParseExact(myDateTime, "ddd MMM d H:mm:ss K yyyy", CultureInfo.InvariantCulture);
string display = correctedDateTime.ToString("dd MMM yyyy HH:mm:ss");

有几点要注意,额外的单个d来捕获日期,我会使用单个H来允许'01'和'1'。有关完整格式的详细信息,请参阅http://msdn.microsoft.com/en-us/library/az4se3k1(v=VS.100).aspx