假设我有这两个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))
还是有更聪明的方法吗?
答案 0 :(得分:1)
如果您只想要相同的日期,只需比较Date
属性:
dt1.Date == dt2.Date
如果你需要在同一个小时或同一个月内,你需要使用你所显示的构造函数。
答案 1 :(得分:1)
答案 2 :(得分:1)
已经有一个内置函数可以从DateTime获取Date,即Date属性:
DateTime.Compare(dt1.Date,dt2.Date)
理论上你可以按顺序比较年,月和日,而不是建立一个新的DateTime,但由于DateTime是一个小的结构构建,它相当便宜,不会导致堆分配等。而且代码更具可读性。