我正在使用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");
答案 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。