gpt4 book ai didi

c# - 使用 NodaTime 计算包含的天数

转载 作者:太空狗 更新时间:2023-10-29 21:35:26 24 4
gpt4 key购买 nike

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

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返回期间。

谢谢


更新:我读过 the source code对于 Period 类和 + 运算符已重载,因此我可以添加

daysBetween += Period.FromDays(1);

最佳答案

(抱歉,我花了这么长时间才回答这个问题 - 我以前没见过。)

任何:

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

应该没问题。我认为 Noda Time 不会为了让这更简单而改变。 Between 是减法运算符的一种“单位模糊”版本 - 您不会找到很多 2 - 1 等于 2 的减法运算符。

关于c# - 使用 NodaTime 计算包含的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10336863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com