【发布时间】:2015-04-16 08:02:10
【问题描述】:
我在 linq 中的查询之间使用。场景是我选择开始日期和结束日期并想要检索这些日期之间的数据。在本地系统上它工作正常,但是当我将它部署到服务器上时它抛出异常。
字符串未被识别为有效的日期时间。
需要以文本框格式输入的数据: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 抛出此异常。当在彼此之间交换文本框时,例如将 _txtTo.text 放置在 _txtFrom.text 位置,反之亦然,然后它在 _txtFrom.text 上引发异常。相比之下,第一部分获取日期,但第二部分没有。
【问题讨论】:
-
你的
CurrentCulture是什么?你确定你用正确的数据库类型存储你的DateTime值吗?希望您不要将它们存储为角色。 -
"en-US" 是当前文化
-
你确定吗?
Convert.ToDateTime("04/01/2015", CultureInfo.GetCultureInfo("en-US"))解析良好。 -
@SonerGönül...数据以日期时间格式存储在数据库中...
-
在“GridView1.DataSource = query;”之前使用 imedeate 窗口查看 linq 生成的查询。使用“query.ToString()”
标签: c# asp.net linq linq-to-sql datetime-format