我已经很多地使用了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)更清洁的方法呢?
答案 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
的构建方式。