nodatime总时间间隔

时间:2016-11-04 21:59:15

标签: c# nodatime

我已经很多地使用了NodaTime和c#,并且它很棒,但在尝试获取两个LocalDateTimes之间的总分钟时却被抓住了。我的两次相隔超过一周。

这不会提供有效的结果: (1)

long Mns = Period.Between(nowLdt,triggerLdt).Ticks.ToSeconds() / 60; 

这确实提供了正确的结果: (2)

double Mns = Period.Between(nowLdt,triggerLdt).ToDuration().ToTimeSpan().TotalMinutes;

所以我的问题确实是3个问题:

为什么NodaTime没有TotalMinutes函数?

为什么上面的(1)不起作用?

有没有比(2)更清洁的方法呢?

1 个答案:

答案 0 :(得分:4)

只需使用Period.Between静态方法,并指定您希望输出的单位。

Period p = Period.Between(start, end, PeriodUnits.Minutes);
long totalMinutes = p.Minutes;

如果您未明确指定PeriodUnits,则默认为PeriodUnits.DateAndTime。这将返回一个Period,其中包含所有可能的日期和时间属性(周除外),从而使Minutes属性只有不到一小时的分钟。

换句话说,使用Period.Between而不指定单位就像在Minutes上要求TimeSpan,而指定PeriodUnits.Minutes就像要求TotalMinutes一样一个TimeSpan。您以任意方式使用Minutes的{​​{1}}属性 - 它只控制Period的构建方式。