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

标签 c# nodatime

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

"Units包含时间单位:小时。参数名称: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;
}

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

关于c# - 使用 NodaTime 计算两个日期之间的小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48119999/

相关文章:

c# - 与野田时间的日期差是正确的吗?

c# - 使用 Noda Time 解析不明确的日期时间

c# - Web 开发人员学习 C 语言有什么好处吗?

c# - 如何从位置 x 开始的二进制文件中读取 y 值的短裤?

c# - 将返回内核实例的 lambda 传递给 Ninject Web.Common UseNinjectMiddleware 是否可以?

c# - 在特定时区找到 LocalDate 的最后可能时刻的最巧妙方法是什么?

c# - 使用 Microsoft 认知语音 API 和非麦克风实时音频流进行语音识别

c# - 继承一个没有任何构造函数的抽象类

c# - 如何使用不同的时区将 UTC 日期和时间转换为本地时间 Nodatime

datetime - 使用 NodaTime 将 UTC 日期时间字符串转换为 Zoned DateTime