仅按日期比较日期时间值

时间:2010-12-08 08:34:34

标签: c#

我希望仅按日期而不是按小时比较两个日期时间值。我怎么能这样做?

我想删除一些超出我选择的时间间隔的值:

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*/

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:5)

还要注意Utc和Locale问题。 对我而言,在Utc中进行所有比较非常重要!

所以做一些像

这样的事情
Datetime d1, d2;
d1 = d1.toUniversalTime().Date;
d2 = d2.toUniversalTime().Date;
if(DateTime.Compare(d1, d2))....

答案 2 :(得分:4)

DateTime d1, d2';

...

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

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

答案 3 :(得分:1)

您可以像这样使用Date属性:

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)
{
    ...
}
相关问题