system.formateexception字符串未被识别为有效的日期时间
本文关键字:有效 日期 时间 识别 formateexception 字符串 system | 更新日期: 2023-09-27 18:25:33
我在以下代码行中收到一个FormatException,消息为"String未被识别为有效的DateTime。":
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"
- 当前的文化是en-GB
- 我尝试过DateTimeStyles的各种变体,但都没有效果
请提出问题所在。
谢谢。
您指定了不正确的解析格式: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);