c# – Noda Time:Period.Between()返回错误的天数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Noda Time:Period.Between()返回错误的天数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1298字,纯文字阅读大概需要2分钟。
内容图文
鉴于下面的代码片段,为什么最后四个输出周期相同?我希望那些行的Days部分是4,3,2,1不是4,4,4,4这是一个bug还是我错过了一些明显的东西? (已经很晚了,我很累,所以很可能是后者.)我正在使用Noda Time 1.2.0.
for (int day = 25; day <= 31; day++)
{
var d1 = new LocalDate(2013, 12, day);
var d2 = new LocalDate(2015, 3, 4);
var period = Period.Between(d1, d2);
Debug.WriteLine("Day: {0}, Period: {1}", day, period);
}
// I get the following output:
Day: 25, Period: P1Y2M7D
Day: 26, Period: P1Y2M6D
Day: 27, Period: P1Y2M5D
Day: 28, Period: P1Y2M4D
Day: 29, Period: P1Y2M4D
Day: 30, Period: P1Y2M4D
Day: 31, Period: P1Y2M4D
解决方法:
这是因为时间的计算是如何完成的 – 从Date and Time Arithmetic in Noda Time开始:“规则非常简单:一次添加一个组件,从最重要的开始,每个步骤包装/截断.”
因此,当它经历了那个二月时,会发生截断到28天.如果编辑代码从(2013年,3天,日)到(2013年,5年,4年),您可以看到截断到30天时发生同样的事情:
Day: 25, Period: P1M9D
Day: 26, Period: P1M8D
Day: 27, Period: P1M7D
Day: 28, Period: P1M6D
Day: 29, Period: P1M5D
Day: 30, Period: P1M4D
Day: 31, Period: P1M4D
如果您仅以天数(Period.Between(d1,d2,PeriodUnits.Days))获得期间,那么您将获得预期的降序计数:
Day: 25, Period: P434D
Day: 26, Period: P433D
Day: 27, Period: P432D
Day: 28, Period: P431D
Day: 29, Period: P430D
Day: 30, Period: P429D
Day: 31, Period: P428D
内容总结
以上是互联网集市为您收集整理的c# – Noda Time:Period.Between()返回错误的天数?全部内容,希望文章能够帮你解决c# – Noda Time:Period.Between()返回错误的天数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。