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

Mik*_*phy 3 c# nodatime

我正在尝试使用NodaTime来计算两个日期之间的小时数,我得到了这个例外:

"单位包含时间单位:小时.参数名称:单位"

此代码可以正常工作数年,数月和数天.

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;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 16

如果您刚刚获得日期,最简单的选择是将天数乘以24.

或者,创建LocalDateTime值:

Hours = Period.Between(birthday.AtMidnight(), today.AtMidnight(), PeriodUnits.Hours).Hours;
Run Code Online (Sandbox Code Playgroud)

或者你可以坚持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;
}
Run Code Online (Sandbox Code Playgroud)

这似乎有点无意义 - 为什么多余的时间计算你有几天的时间?