【问题标题】:Not valid datetime error due to wrong fomat of datetime in calender extender由于日历扩展器中日期时间格式错误,日期时间错误无效
【发布时间】:2013-07-03 15:21:18
【问题描述】:

我正在尝试将 DateTime 值存储在数据类型为 DateTime 的数据库字段 "Date" 中。

但我得到以下错误:

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

我的代码如下:

dr["Date"] = System.Convert.ToDateTime(txtDate.Text);

dr["Date"] 给我数据库列名称“日期”,其数据类型是我数据库中的日期时间。
我正在使用 txtDate 文本框的日历扩展器获取 DateTime 值,
然后将该值转换为 DateTime 数据类型,以便我可以将该值插入到数据库表中。
但是,当我提供正确的数据类型时,为什么我会遇到错误。

【问题讨论】:

  • 文本框中的文字是什么?错误信息非常丰富
  • 你没说。 00 是几月?
  • 这是自定义格式吗? (YYYYhhmm)?
  • @Sayse - 好点。也许格式是yyyy-mm-dd,而它应该yyyy-MM-dd
  • mm 是分钟; MM 是月份。

标签: c# sql-server-2008


【解决方案1】:

我想分享我到底做错了什么,尽管这会让我看起来像个傻瓜。但希望它能帮助遇到同样问题的其他人。

我给日历扩展器的格式错误,如下所示:

yyyy-mm-dd

正确的格式应该是:

yyyy-MM-dd

【讨论】:

  • +1 用于发布答案。我不认为这会让你看起来像个傻瓜。有时只需要第二组(或更多)新的眼睛就能发现问题 - 每个开发人员都有“我就是无法弄清楚这个错误”的时刻。 :) 不要忘记接受您的回答,这样您也可以获得代表信用。
【解决方案2】:

一些代码可以捕捉到这样的事情并且不会导致异常:

if (DateTime.TryParse(txtDate.Text, out dateValue)) 
{
      dr["Date"] = dateValue;
}
else
{
      Debug.Write("TextBox Value '{0}' isn't a valid datetime.", txtDate.Text);
}

【讨论】:

    【解决方案3】:

    使用DateTime.TryParseExact根据格式提取DATETIME...

                DateTime yourDate;
                var formats = new[] { "yyyy-MM-dd" };
                if (DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out yourDate))
                {
                    dr["Date"] = yourDate;
                }
                else
                {
                    // Do with Invalid DateTime
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 2016-06-12
      相关资源
      最近更新 更多