Noda 时间:Period.Between() 01/01/2023 和 31/12/2023 返回 11 个月而不是 12

问题描述 投票:0回答:1

我正在尝试获取两个 DateTime 对象之间的月数。

我正在使用NodaTime。我的两个日期时间值是:

  • 开始: 01/01/2023
  • 结束:2023年12月31日

这是我的代码:

// period in months between start and end date
LocalDateTime startDate = LocalDateTime.FromDateTime(request.Entity.StartDatetime.Value);
LocalDateTime endDate = LocalDateTime.FromDateTime(request.Entity.FinishDatetime.Value);
Period period = Period.Between(startDate, endDate, PeriodUnits.Months);
int numberOfMonths = period.Months;

我希望

numberOfMonths
12
,但相反,我得到
11

我哪里出错了?

c# nodatime
1个回答
0
投票

不出所料,这段代码给出了 12 个月的期限:

LocalDateTime startDate = LocalDateTime.FromDateTime(new DateTime(2023, 1, 1));
LocalDateTime endDate = LocalDateTime.FromDateTime(new DateTime(2024, 1, 1));
Period period = Period.Between(startDate, endDate, PeriodUnits.Months);
int numberOfMonths = period.Months;

关键是12个月其实已经过去了

如果您查看的是

2023/12/31
那么它实际上是
2023/12/31 00:00
并且比 12 个月还短了一天。

© www.soinside.com 2019 - 2024. All rights reserved.