【问题标题】:C# DateTime.ParseExact throwing format exceptionC# DateTime.ParseExact 抛出格式异常
【发布时间】:2010-12-21 20:52:15
【问题描述】:

我正在使用 MVC3 开发一个 .NET4 网络应用程序。

假设我从 XML 提要中获取以下 DateTime 作为字符串。我的应用程序正在读取 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);

在尝试执行此代码时,我遇到了格式异常。有人有什么想法吗?

--更新--

这是我在各种答案后得到的。但仍然抛出相同的异常。

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

【问题讨论】:

  • 格式字符串是您正在阅读的格式,而不是您正在写入的格式 - 请参阅 Andrew 的回答。
  • @Jackson,谢谢。从来不知道!

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


【解决方案1】:

尝试将您的解析格式更改为:

"ddd MMM HH:mm:ss K yyyy"

如果您希望重新格式化DateTime,那么在您对已解析的DateTime 调用DateTime.ToString 时指定该格式字符串:

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

【讨论】:

  • 感谢您的明确回答!虽然它一直给我抛出同样的异常。我更新了问题。
【解决方案2】:

如果您尝试阅读此内容: “2010 年 12 月 19 日星期日 11:45:45 +0000”

您需要一个额外的“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

【讨论】:

  • 添加步骤如下: 1) 将字符串转换为 DateTime 2) 将 DateTime 转换为可读的内容。我链接到的格式化页面对两者都有用。
  • 谢谢你成功了! +1 获得好的答案、解释和信息
【解决方案3】:

根据您指定的日期(假设时间为 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多