如何在NodaTime中找到一天中的小时数?

时间:2015-08-21 08:12:10

标签: .net nodatime

我正在编写一个测试应用程序来重现一些数据编写方案 - 每小时运行一次的任务。
为此,我需要知道它将执行多少次 - 给定的数小时天。我试图这样做:
Period.Between(localDateTimeStart.Date, localDateTimeStart.Date.PlusDays(1), PeriodUnits.Hours)
但它给了我{名} Units contains time units: Hours的ArgumentException。在NodaTime中这样做的惯用方法是什么?或者我的方法是错的?

1 个答案:

答案 0 :(得分:5)

在两个本地日期/时间值之间,总会有24小时。听起来您对特定区域中的日期感兴趣,在这种情况下您需要:

 var startOfDay = zone.AtStartOfDay(date);
 var startOfNextDay = zone.AtStartOfDay(date.PlusDays(1));
 var duration = startOfNextDay.ToInstant() - startOfDay.ToInstant();
 var hours = duration.Ticks / NodaConstants.TicksPerHour;

(在Noda Time 2.0中,Duration有一个TotalHours属性使这更容易。这将返回double值,而此处hourslong由于操作数的类型。请注意,如果时区有(例如)半小时的转换,它可能会丢失信息。)