Csharp/C#教程:使用NodaTime计算包含天数分享


使用NodaTime计算包含天数

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

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

然后daysBetween.Days == 1

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

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

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

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

谢谢


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

 daysBetween += Period.FromDays(1); 

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

任何

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

对于“模糊”的脑子,我们可能会考虑一段时间来包含开始日期和结束日期,如果它标识一天,一周,一个月等(参见整数倍),那么你可以编码:

上述就是C#学习教程:使用NodaTime计算包含天数分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var start = new NodaTime.LocalDateTime(s.Year, s.Month, s.Day, s.Hour, s.Minute); var end = new NodaTime.LocalDateTime(e.Year, e.Month, e.Day, e.Hour, e.Minute); NodaTime.Period periodInclusive = NodaTime.Period.Between(start, end.PlusDays(1), NodaTime.PeriodUnits.AllDateUnits); NodaTime.Period period = NodaTime.Period.Between(start, end, NodaTime.PeriodUnits.AllDateUnits); bool isInclusivePeriod = periodInclusive.Days + periodInclusive.Weeks + periodInclusive.Months + periodInclusive.Years < period.Days + period.Weeks + period.Months + period.Years; period = isInclusivePeriod ? periodInclusive : period; // do stuff with period here.... 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1025708.html

(0)
上一篇 2022年1月8日
下一篇 2022年1月8日

精彩推荐