Nodatime时间间隔总分钟数

本文关键字:分钟 时间 Nodatime | 更新日期: 2023-09-27 18:16:19

我经常在c#中使用nodeatime,它非常棒,但是在试图获取两个LocalDateTimes之间的总分钟数时被发现了。我的两次约会相隔一个多星期。

这没有提供一个有效的结果:(1)

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

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

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

所以我的问题实际上是三个问题:

为什么nodeatime没有TotalMinutes函数?

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

是否有比(2)更简洁的方法?

Nodatime时间间隔总分钟数

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

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

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

换句话说,使用Period.Between而不指定单位就像在TimeSpan上请求Minutes,而指定PeriodUnits.Minutes就像在TimeSpan上请求TotalMinutes。无论如何,您都可以使用PeriodMinutes属性—它只是控制Period的构造方式。