2016-08-02 73 views
0

我需要将所选日期与数据库中的日期进行比较,并返回日期范围内的值,但格式不正确。数据库中的日期格式为2016-01-02 00:00:00.000(来自其中一行)如何将datetime与datepicker的值进行比较?

我正在使用下面的代码,但无法比较,并且一直在收到“字符串未被识别为有效约会时间。”帮帮我?

protected void RadPushButton1_Click(object sender, EventArgs e) 
    { 
     DateTime startDate = DateTime.Parse(RadDatePickerStart.SelectedDate.ToString()); 
     string s = startDate.Date.ToString("yyyy-dd-MM"); 
     startDate = DateTime.Parse(s+"12:00:00 AM"); 
     // DateTime endDate = DateTime.Parse(RadDatePickerEnd.SelectedDate.ToString()); 
     EMCSettlementManager man = new EMCSettlementManager(); 
     Grid.DataSource = man.GetSTL010(r => EntityFunctions.TruncateTime(r.settlement_date) >= startDate); 
     Grid.DataBind(); 
    } 
+0

哪个解析抛出该错误? –

+2

为什么你将'DateTime'转换为'String'并返回? DateTime不存储显示格式,只有DateTime的字符串表示。 –

+0

如果您已经有'DateTimes',请不要使用字符串和'DateTime.Parse'。 'DateTime'有类似'AddHours'的方法 –

回答

0

如果要比较日期,确保所有值的类型DateTime,不String的。

尝试这样:

DateTime startDate = RadDatePickerStart.SelectedDate; 
EMCSettlementManager man = new EMCSettlementManager(); 
Grid.DataSource = man.GetSTL010(r => r.settlement_date >= startDate); 

如果你想摆脱时间的部分,你可以做这样的事情:

DateTime startDate = RadDatePickerStart.SelectedDate.Date; 

如果在数据库中的字段是字符串类型,不是日期时间,请将其转换为日期(时间)类型。在任何地方使用字符串是一个糟糕的选择,alsnog被称为“字符串型”。 (请参阅:https://blog.codinghorror.com/new-programming-jargon/

+0

我曾试过,但得到了“不能隐式转换'System.DateTime?'到'System.DateTime'。显式转换存在(你是否缺少一个转换))“所以我认为日期格式可能不同于yyyymmdd而不是yyyyddmm,这就是为什么我试图把它变成一个字符串来改变它。在datepicker中我缺少的是“.value”。 DateTime startDate = RadDatePickerStart.SelectedDate.value; 现在有效。谢谢! – Scar

相关问题