2016-08-02 72 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

相關問題