2010-12-08 27 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))....