DateTime比较,减去某个时间范围? C#

时间:2011-02-28 10:51:03

标签: c# datetime

假设我有这两个DateTime对象:

var dt1 = new DateTime(1900,12,1,1,1,1);
var dt2 = new DateTime(1900, 12, 1, 1, 59, 1);

显然,如果我DateTime.Compare(dt1,dt2),该方法将返回一个值,表示它们不相等(因为59 /分钟组件)。

如果我只想要将精度与限制在一定值(即同一天 - 不关心小时/分钟等)进行比较,那么最好的方法是重建每个日期时间对象吗?

即。

DateTime.Compare(new DateTime(dt1.Year,dt1.Month,dt1.Day,1,1,1),new DateTime(dt2.Year,dt2.Month,dt2.Day,1,1,1))

还是有更聪明的方法吗?

3 个答案:

答案 0 :(得分:1)

如果您只想要相同的日期,只需比较Date属性:

dt1.Date == dt2.Date

如果你需要在同一个小时或同一个月内,你需要使用你所显示的构造函数。

答案 1 :(得分:1)

同一天很简单 - 只需使用Date属性:

dt1.Date.CompareTo(dt2.Date)

对于其他粒度,您可能需要手动构建不同的值。

答案 2 :(得分:1)

已经有一个内置函数可以从DateTime获取Date,即Date属性:

DateTime.Compare(dt1.Date,dt2.Date)

理论上你可以按顺序比较年,月和日,而不是建立一个新的DateTime,但由于DateTime是一个小的结构构建,它相当便宜,不会导致堆分配等。而且代码更具可读性。