【问题标题】:System.FormatException: String was not recognized as a valid DateTime - when trying to convert MM/DD/YYYYSystem.FormatException:字符串未被识别为有效的 DateTime - 尝试转换 MM/DD/YYYY 时
【发布时间】:2018-07-13 12:02:42
【问题描述】:

我有以下 C# 方法:

DateTime ConvertStringToDate(string dateInString)
{
    try {
        //string SSD = dateInString;
        //DateTime date = Convert.ToDateTime(SSD);
        //string strDate = String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", date);
        //return Convert.ToDateTime(strDate);

        return DateTime.ParseExact(dateInString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
    }
    catch (Exception) { }
    return DateTime.Today;
} 

注释中的代码是我之前尝试过的另一种方式。

我在印度,正在为我在美国的客户开发一个 ASP.NET WebForms 应用程序。在其中一种表格上,我的客户将在 TextBox 中输入日期,例如 2018 年 6 月 20 日,格式为 MM/dd/yyyy。

但在这两种情况下我都会收到此错误:System.FormatException: 'String was not recognized as a valid DateTime.'

我在 SO 上尝试了很多解决方案,但都没有奏效。

【问题讨论】:

  • @Rafalon 对不起,我试图用时间来测试它。忘记删除了。它也不适用于日期。
  • dateInString确切值是多少? 不要猜测,调试并检查。
  • MM/dd/yyyy 格式将要求您的日期为 06/20/2018 并且仍然 MM/dd/yyyy hh:mm:ss 不能用于仅日期字符串
  • @mjwills 调试时该值为 6/20/2018。
  • 那你希望MM/dd/yyyy hh:mm:ss如何匹配这个?

标签: c# asp.net .net datetime webforms


【解决方案1】:
return DateTime.ParseExact(dateInString, "M/d/yyyy", CultureInfo.InvariantCulture);

Check it here

我的答案和 Fabulous 的答案之间的区别在于,我还将 dd 缩短为 d,所以如果您的用户写 6/6/2018 它也可以工作

【讨论】:

  • @AishwaryaShiva 是的
  • @AishwaryaShiva 你为什么要问这个。你为什么不直接测试呢?
  • @mason 我实际上问自己和你一样的问题,特别是因为我提供了一个链接,你可以在其中基本上更改输入并点击“执行”
  • @mason 我其实很着急。因此,请阅读答案而不注意链接和示例。 ;)
【解决方案2】:

您的日期格式是 MM/dd/yyyy,而您的输入不匹配。它是 M/dd/yyyy

根据您的评论,要解决 2018 年 6 月 1 日的问题,您需要按照以下方式进行操作:M/d/yyyy

【讨论】:

  • 在“2018 年 6 月 1 日”尝试了这种格式,但它不起作用。
  • @Rafalon 在看到 OP 的评论并对其进行排序后,我看到并赞成您的回答。我在编辑引用时间的原始答案时没有看到它。
【解决方案3】:

您的格式字符串缺少 AM/PM 指示符:

return DateTime.ParseExact
    (dateInString + " 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
    // Here ---------------------------------------------^

【讨论】:

  • 对不起,我试图用时间来测试它。忘记删除了。它也不适用于日期。请参阅更新。
【解决方案4】:

尝试不连接字符串“AM”

【讨论】:

  • 对不起,我试图用时间来测试它。忘记删除了。它也不适用于日期。查看更新。
  • 您填写 MM/dd/yyyy 但使用此“MM/dd/yyyy hh:mm:ss”模式
  • 尽量只使用“MM/dd/yyyy”
【解决方案5】:

几天前我遇到了同样的异常,当时是 7 月 9 日,我只是在 9 后附加了一个 0 以匹配日期格式。

尝试在您的月份中附加一个 0 以匹配您的日期格式中的 MM

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 1970-01-01
    • 2023-01-29
    • 2014-04-24
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多