nodatime时间之间的总分钟数

0 c# nodatime

我已经在C#中使用了NodaTime了很多,这很棒,但是在试图获取两个LocalDateTimes之间的总分钟数时却陷入困境。我的两次相隔一个多星期。

这不会产生有效的结果:(1)

long Mns = Period.Between(nowLdt,triggerLdt).Ticks.ToSeconds() / 60; 
Run Code Online (Sandbox Code Playgroud)

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

double Mns = Period.Between(nowLdt,triggerLdt).ToDuration().ToTimeSpan().TotalMinutes;
Run Code Online (Sandbox Code Playgroud)

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

为什么NodaTime没有TotalMinutes函数?

为什么上述(1)无效?

是否有比(2)更加干净的方法?

Mat*_*int 5

只需使用Period.Between静态方法,然后指定您想要用输出表示的单位。

Period p = Period.Between(start, end, PeriodUnits.Minutes);
long totalMinutes = p.Minutes;
Run Code Online (Sandbox Code Playgroud)

如果您没有明确指定PeriodUnits,则默认为PeriodUnits.DateAndTime。这会返回一个Period,其中填充了所有可能的日期和时间属性(星期除外),因此该Minutes属性只有不到一小时的分钟。

换句话说,Period.Between不指定单位使用就像在Minutes上要求TimeSpan,而指定PeriodUnits.Minutes就像TotalMinutes在TimeSpan上要求。您可以使用任一种方式的Minutes属性Period-它仅控制的Period构造方式。