我希望仅按日期而不是按小时比较两个日期时间值。我怎么能这样做?
我想删除一些超出我选择的时间间隔的值:
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*/
答案 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)
{
...
}