【问题标题】:String was not recognized as a valid DateTime during insert插入期间字符串未被识别为有效的 DateTime
【发布时间】:2012-12-30 10:24:51
【问题描述】:

当我尝试转换为日期时间时出现以下错误。

字符串未被识别为有效的日期时间。

 cost.b_date = DateTime.Parse(c_date.Text) ;//c_date.Text = 12/28/2012

那我试试

    string date = string.Format("{0:yyyy-MM-dd}",c_date.Text);
    cost.b_date = DateTime.Parse(date) ;

但我遇到了同样的异常,如何解决这个问题。

【问题讨论】:

  • 可能是输入值错误。代码已成功运行以获得正确的值。
  • 什么是c_date?如果您有日历控件或日期时间选择器,只需选择日期,而不是原始文本..

标签: c# asp.net datetime linq-to-entities calendarextender


【解决方案1】:

输入是字符串时使用string.Format是没有意义的。

如果你知道字符串的格式,你应该使用DateTime.ParseExactDateTime.TryParseExact。例如,对于你得到的字符串,你可以使用:

DateTime date = DateTime.ParseExact(text, "MM/dd/yyyy",
                                    CultureInfo.InvariantCulture);

你应该考虑:

  • 这是用户输入吗?如果是这样,请使用TryParseExact 更轻松地检测用户错误而不会出现异常。
  • 您确定知道确切的格式吗?如果没有,使用DateTime.TryParse 可能更合适。
  • 您确定了解这种文化吗?如果不是当前线程的文化,则应明确指定。
  • 您是否以文本形式获取值?如果您可以使用另一种输入形式,以 DateTime 开头的值,那将是更可取的。

【讨论】:

  • 我收到此错误SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
  • 我的约会时间=28/12/2012 12:00:00 AM
  • @just_name:你的问题根本没有提到 SQL。您还没有展示如何尝试将值插入数据库。我希望您使用的是参数化 SQL,而不是直接在 SQL 字符串中包含值...
【解决方案2】:
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result = DateTime.ParseExact(c_date.Text, "d", provider);

【讨论】:

    【解决方案3】:

    尝试使用 DateTime.ParseExact。

    DateTime date = DateTime.ParseExact(c_date.Text, "yyyy/MM/dd", null);
    

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      相关资源
      最近更新 更多