我试图获取两个日期时间之间的天数,但不是根据确切的时间跨度,而是根据日期 a 和日期 b 之间的“日期”差异。不考虑时间。
到目前为止,我使用以下方法计算了一个项目的年龄:
(DateTime.Now - creationDate).Days
这段代码的问题是,对于前一天但不到 24 小时前创建的东西,它会输出“0 天”,这对我的用户来说显然不是很清楚。
所以我想要完成的是,即使对于例如在晚上 11:59 创建的项目,只要时钟到达午夜就得到“1 天前”的输出。我怎么能做到这一点?
我试图获取两个日期时间之间的天数,但不是根据确切的时间跨度,而是根据日期 a 和日期 b 之间的“日期”差异。不考虑时间。
到目前为止,我使用以下方法计算了一个项目的年龄:
(DateTime.Now - creationDate).Days
这段代码的问题是,对于前一天但不到 24 小时前创建的东西,它会输出“0 天”,这对我的用户来说显然不是很清楚。
所以我想要完成的是,即使对于例如在晚上 11:59 创建的项目,只要时钟到达午夜就得到“1 天前”的输出。我怎么能做到这一点?
两种选择:
1)先取两个日期:
var days = (DateTime.Today - creationDate.Date).Days;
2) 改用我的Noda Time日期/时间库,LocalDate
用于涉及的两个日期,然后Period.Between(start, end, PeriodUnits.Days)
得到几天的时间。(您也可以获取周数、月数等。)诚然,在 Noda Time 中故意获取“今天的日期”有点棘手 - 其中 .NET 隐式使用“系统时区”,Noda Time 迫使您更加明确。
我会像使用它一样简单地使用它
int days =(int)DateTime.Now.Subtract(creationDate).TotalDays;
希望这可以帮助