使用“Period.Between”和减去两个本地日期之间的区别

Difference between using `Period.Between` and substracting two local dates

为什么 periodBetween.Dayssubstracted.Days 的结果不同? 我可以看到 periodBetween.Months 是 0,substracted.Months 是 2,我可以看到这两个结果有何不同,但我不知道为什么 :).

using NodaTime;
void Main()
{
    var firstDate = new LocalDate(2020, 8, 1);
    var secondDate = new LocalDate(2020, 10, 30);
    
    var periodBetween = Period.Between(firstDate, secondDate, PeriodUnits.Days);
    var subtracted = secondDate - firstDate;
    Console.WriteLine(periodBetween.Days);
    Console.WriteLine(subtracted.Days);
}

您的 periodBetween 计算结果是“这两个日期之间的时间间隔是多少,仅使用 天?”

您的 subtracted 计算相当于调用 Period.Between 而不指定任何单位,或者指定 PeriodUnits.Days | PeriodUnits.Months | PeriodUnits.Years - 换句话说,“这两个日期之间的时间间隔是多少,使用天数,月和年?

一个周期有 独立 年、月、日、小时、分钟等值 - 如果您使用 years/months/days 计算一个值,这不等同于计算一个值只用了几天。

“90 天”的期限与“2 个月零 29 天”的期限不同。在一些 计算中,他们会给出相同的答案,但并非总是如此。例如,如果您将“90 天”添加到 2020 年 1 月 1 日,您将得到 2020 年 3 月 31 日...但是如果您将“2 个月零 29 天”添加到 2020 年 1 月 1 日,您将得到 3 月 30 2020.