【问题标题】:system.formatexception string was not recognized as a valid datetimesystem.formatexception 字符串未被识别为有效的日期时间
【发布时间】:2015-12-04 05:50:02
【问题描述】:

我收到 FormatException 消息“字符串未被识别为有效的日期时间”。在以下代码行:

SqlCommand scmd1 = new SqlCommand("select count(*) Kount  from chequerequests1 where requestdate between '" + DateTime.ParseExact(txtFromDate.Text, "dd-MMM-yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + " 00:00:00.000' and '" + DateTime.ParseExact(txtToDate.Text, "dd-MMM-yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + " 23:59:59.999' group by chequebookstatus", sc);
  • 日期格式为“dd/MM/yyyy”
  • 当前的文化是英文版
  • 我尝试了 DateTimeStyles 的各种变体,但都没有效果。

请提出问题所在。

谢谢。

【问题讨论】:

  • 您从txtFromDate.Text 获得的价值是多少?
  • 我在文本框中得到了相同的值,例如:20-11-2014
  • @shine 20-11-2014 不是dd-MMM-yyyy 格式。
  • @shine 您是否尝试使用“/”而不是“-”? txtFromDate 是文本字段还是变量?
  • @shine 如果我是你,我将为此使用(SP)存储过程,你所要做的就是将 txtDateFrom 值和 txtToDate 值作为参数传递,然后在存储过程。就这么简单。

标签: c# asp.net


【解决方案1】:

您指定了错误的解析格式:dd-MMM-yyyy
您的文本框采用dd-MM-yyyy 格式。

更改格式,传递给ParseExact,它应该可以工作:

SqlCommand scmd1 = new SqlCommand("select count(*) Kount  from chequerequests1 where requestdate between '" + DateTime.ParseExact(txtFromDate.Text, "dd-MM-yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + " 00:00:00.000' and '" + DateTime.ParseExact(txtToDate.Text, "dd-MM-yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + " 23:59:59.999' group by chequebookstatus", sc);

一般来说,最好停止连接字符串以构建 SQL 查询,并开始使用 SQL 参数。

SqlCommand scmd1 = new SqlCommand("select count(*) Kount from chequerequests1 where requestdate between @dateStart and @dateEnd group by chequebookstatus", sc);

DateTime dtStart = DateTime.ParseExact(txtFromDate.Text, "dd-MM-yyyy", CultureInfo.InvariantCulture).StartOfDay();
DateTime dtEnd = DateTime.ParseExact(txtToDate.Text, "dd-MM-yyyy", CultureInfo.InvariantCulture).EndOfDay();

scmd1.Parameters.AddWithValue("dateStart", dtStart);
scmd1.Parameters.AddWithValue("dateEnd", dtEnd);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多