使用NodaTime计算包容性天数

Pau*_*bra 6 c# datetime nodatime

例如,如果我有以下代码:

var nodaStart = new LocalDate(2012, 5, 1);
var nodaEnd = new LocalDate(2012,5,2);
var daysBetween = Period.Between(nodaStart, nodaEnd,PeriodUnits.Day);
Run Code Online (Sandbox Code Playgroud)

然后 daysBetween.Days == 1

但是,我计算的范围需要计算为2天.即它需要包括开始和结束日期.

实际的方法可以采取开始和结束日期(相隔不超过一年),并需要计算天数.如果超过31天,则剩余的数量将返回整周.

我有那种逻辑工作正常,但因为计数是独家我有一天出去了.

我想我可以startDate.addDays(-1)在创建nodaStart它之前做,但我想知道是否有更优雅/漂亮的方式让noda返回Period.

谢谢


更新:我已经阅读了类的源代码,Period并且+运算符被重载,所以我可以添加

daysBetween += Period.FromDays(1);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

(对不起,我花了很长时间才回答这个问题 - 我之前没见过.)

任何:

  • 在计算之前将一天添加到最后(这是最合乎逻辑的方法,IMO - 正如Roger所说,你希望第二天开始,有效)
  • 在计算之前从开始减去一天
  • 将1加到你结束的天数

应该没事.我认为Noda Time不会改变这一点.Between是一种减法运算符的"模糊周围单位"版本 - 你不会发现许多减法运算符,其中2 - 1是2.

  • +1表示"你不会找到许多减法运算符,其中2 - 1是2".:) (3认同)