繁体   English   中英

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

[英]DateTime comparison, minus certain timeframe? c#

假设我有以下两个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对象?

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

还是有更聪明的方法来做到这一点?

如果只希望使用相同的日期,则只需比较Date属性:

dt1.Date == dt2.Date

如果您需要在同一小时或同一月使用,则需要使用显示的构造函数。

同一天很容易-只需使用Date属性即可:

dt1.Date.CompareTo(dt2.Date)

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

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

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

从理论上讲,您可以按此顺序比较年,月和日,而不用构建新的DateTime,但是由于DateTime是小的结构,因此构建起来非常便宜,不会导致堆分配等。并且代码更具可读性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM