使用 NodaTime 计算两个日期之间的小时数

Calculate the number of hours between two dates using NodaTime

我正在尝试使用 NodaTime 计算两个日期之间的小时数,但出现此异常:

"Units contains time units: Hours. Parameter name: units"

此代码在数年、数月和数天内都可以正常工作。

public ElapsedTimeNodaTime(DateTime StartDate, DateTime EndDate)
{
   var birthday = new LocalDate(StartDate.Year, StartDate.Month, Date.Day);
   var today = new LocalDate(EndDate.Year, EndDate.Month, EndDate.Day);

    Years = Period.Between(birthday, today, PeriodUnits.Years).Years;
    Months = Period.Between(birthday, today, PeriodUnits.Months).Months;
    Days = Period.Between(birthday, today, PeriodUnits.Days).Days;
    Hours = Period.Between(birthday, today, PeriodUnits.Hours).Hours;
}

如果您只有日期,最简单的选择是将天数乘以 24。

或者,创建 LocalDateTime 值:

Hours = Period.Between(birthday.AtMidnight(), today.AtMidnight(), PeriodUnits.Hours).Hours;

或者你可以坚持 LocalDateTime 做所有事情:

public ElapsedTimeNodaTime(DateTime startDate, DateTime endDate)
{
   var birthday = startDate.ToLocalDateTime();
   var today = endDate.ToLocalDateTime();

    Years = Period.Between(birthday, today, PeriodUnits.Years).Years;
    Months = Period.Between(birthday, today, PeriodUnits.Months).Months;
    Days = Period.Between(birthday, today, PeriodUnits.Days).Days;
    Hours = Period.Between(birthday, today, PeriodUnits.Hours).Hours;
}

虽然这似乎有点毫无意义 - 为什么在有天数的情况下冗余地计算小时数?