【问题标题】:Converting String to DateTime results in error [duplicate]将字符串转换为日期时间会导致错误 [重复]
【发布时间】:2013-01-23 20:08:45
【问题描述】:

可能重复:
DateTime.ParseExact string format exception

FormatException被发现!

我尝试将字符串转换为DateTime

string dateString1 = "5/22/1985 12:00:00 AM";

DateTime myDate = 
    DateTime.ParseExact(dateString1, 
                        "mm-dd-yyyy",
                        System.Globalization.CultureInfo.InvariantCulture);

它给了我一个错误,但是当我尝试以这种格式转换字符串时

string dateString2 = "10-10-2000";

第二个字符串工作正常,但 dateString1 不起作用!

【问题讨论】:

标签: c# datetime


【解决方案1】:

您的代码回答了您的问题。您正在使用 ParseExact,它的格式不接受您的第一个字符串。

来自 MSDN (http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx):

使用指定的格式和特定​​于区域性的格式信息将日期和时间的指定字符串表示形式转换为其等效的 DateTime。字符串表示的格式必须与指定的格式完全匹配。

【讨论】:

    【解决方案2】:

    试试这个:

    DateTime myDate = DateTime.ParseExact(dateString1, "M/d/yyyy h:m:s tt", System.Globalization.CultureInfo.InvariantCulture);
    

    【讨论】:

      【解决方案3】:

      您专门让您的代码完全按照“mm-dd-yyyy”格式解析日期,所以当然只有具有该格式的日期才有效。如果您改用 DateTime.Parse,这两个示例都可以使用。

      【讨论】:

      • 谢谢!我现在意识到了,谢谢你的提示。这是我第一次使用 DateTime,我还在学习 :)
      【解决方案4】:

      您可以使用 Parse 代替 ParseExact:

      DateTime myDate = DateTime.Parse(dateString1);
      

      这应该可以正确解析您的两个示例中的任何一个。 http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

      【讨论】:

      • 它不工作 DateTime myDate = DateTime.Parse("5/22/1985 12:00:00 AM")
      猜你喜欢
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      相关资源
      最近更新 更多