我正在使用linq中的查询。方案是我选择开始日期和结束日期,并希望在这些日期之间检索数据。在本地系统上它的工作正常,但是当我在服务器上部署它时,它会抛出异常。
字符串未被识别为有效的DateTime。
需要以文本框格式输入的数据: 04/01/2015
以数据库格式存储的数据: 2013-10-23 12:35:56.593
protected void _btnSearch_Click(object sender, EventArgs e)
{
using (DataClassesCABEEDataContext db = new DataClassesCABEEDataContext())
{
var query = (from a in db.Jobs where
(a.Job_DateTime >= Convert.ToDateTime(_txtFrom.Text)
&& a.Job_DateTime <= Convert.ToDateTime(_txtTo.Text)) //using add watch here
select new
{
Reference = a.Job_No,
Booking_Time = a.Job_DateTime.Value.ToString("HH:mm", CultureInfo.CurrentCulture),
Cust_Name = a.CustName,
Price = a.Price,
});
GridView1.DataSource = query;
GridView1.DataBind();
}
}
当我在上面的注释行代码中使用add watch时调试代码会抛出异常。 _txtTo.Text抛出此异常。当在_txtFrom.text位置放置_txtTo.text之间交换文本框时,反之亦然,然后在_txtFrom.text上抛出异常。相比之下,第一部分获得日期,但第二部分没有。
答案 0 :(得分:0)
如果您知道日期格式,则应使用 DateTime.ParseExact
(a.Job_DateTime >= DateTime.ParseExact(_txtFrom.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)
&& a.Job_DateTime <= DateTime.ParseExact(_txtTo.Text, "dd/MM/yyyy",CultureInfo.InvariantCulture)))