2010-12-08 60 views
7

我希望只是日期比較日期時間值,而不是小時比較datetime值。我怎麼能這樣做?只是日期

我想刪除一些值是由我選擇的區間之外:

if (DateTime.Compare(DateTime.Parse(t.Rows[i][1].ToString().Trim()), dateTimePicker1.Value) < 0 || DateTime.Compare(DateTime.Parse(t.Rows[i][1].ToString().Trim()), dateTimePicker2.Value) > 0) 
/*remove comand*/ 

回答

8

使用DateTime.Date此屬性,因爲這僅包含DateTime對象的日期部分。

if (DateTime.Compare(DateTime.Parse(t.Rows[i][1].ToString().Trim()).Date, 
    dateTimePicker1.Value.Date) < 0 || DateTime.Compare(DateTime.Parse(t.Rows[i]1].ToString().Trim()).Date, 
    dateTimePicker2.Value.Date) > 0) 
4
DateTime d1, d2'; 

... 

// following will compare by date and time both 
d1 == d2 

// following will compare by date only 
d1.Date == d2.Date 
1

您可以使用日期屬性是這樣的:

DateTime currentTime = Datetime.Now; 
DateTime aBitEarlier = currentTime.AddHours(-5).AddMinutes(-4); 

if (currentTime.Date == aBitEarlier.Date) 
{ 
    ... 
} 

所以你的情況:

if (DateTime.Compare(DateTime.Parse(t.Rows[i][1].ToString().Trim()).Date, dateTimePicker1.Value.Date) < 0 || DateTime.Compare(DateTime.Parse(t.Rows[i][1].ToString().Trim()).Date, dateTimePicker2.Value.Date) > 0) 
{ 
    ... 
} 
5

也意識到Utc和區域設置問題。 對我來說,在Utc做所有的比較很重要!

所以這樣做

Datetime d1, d2; 
d1 = d1.toUniversalTime().Date; 
d2 = d2.toUniversalTime().Date; 
if(DateTime.Compare(d1, d2))....