2013-02-23 55 views
0

我想获取两个日期时间之间的天数,但不是根据确切的时间跨度,而是根据日期a和日期b之间的“日期”差异。无需花费数小时。根据日期获取天数,而不是持续时间?

到目前为止,我计算出项目的使用年龄:

(DateTime.Now - creationDate).Days 

这段代码的问题是,对于所创建的一天,而不是24小时前出现,但较少的东西,它会输出“0天“,这对我的用户来说显然不是很清楚。

所以我想要完成的是,即使是在下午11:59创建的项目,例如,在时钟到午夜时立即获得“1天大”的输出。我怎么能做到这一点?

+0

这个问题应该interresting为您提供:http://stackoverflow.com/questions/3177836/how-to-format-time -since-xxx-eg-4-minutes-ago-similar-to-stack-exchange-site – Larry 2013-02-23 13:23:56

+0

@Laurent:在这种情况下,我看不出有什么相关性。 – 2013-02-23 13:25:18

+0

你说得对。我认为背后的问题是向用户显示明确的时间跨度。所以我把这个链接作为评论,可能会激发一些想法。 – Larry 2013-02-23 13:35:09

回答

3

两个选项:

1)先取两个日期:

var days = (DateTime.Today - creationDate.Date).Days; 

2)使用我的Noda Time日期/时间库,而不是使用LocalDate所涉及的两个日期,然后Period.Between(start, end, PeriodUnits.Days)得到几天的时间。 (你也可以得到几个星期,几个月等等)。在Noda Time中 - 毫无疑问,获得“今天的日期”有点棘手 - 在.NET中隐含地使用“系统时区”,Noda Time迫使你更加明确。

2

我会用它只是像

int days =(int)DateTime.Now.Subtract(creationDate).TotalDays; 

希望这有助于

相关问题