【发布时间】:2018-01-23 12:40:11
【问题描述】:
我试图在我正在创建的 C# 应用程序中显示两个日期之间的年、月和日。 (使用控制台进行测试)
我正在使用 NodaTime 来实现这一点,但我在数月后遇到了问题。
我已经阅读了这里的大部分问题和答案,但没有找到任何我可以从中受益的东西。
该功能在大多数情况下都有效,但有时如果天数 > 30(这将增加一个月),它不会添加月份
我正在使用此代码进行测试
LocalDate start = new LocalDate(2017, 10, 16);
LocalDate end = new LocalDate(2018, 1, 15);
Period period = Period.Between(start, end);
Console.WriteLine("{0} years, {1} months, {2} days",
period.Years, period.Months, period.Days);
Console.ReadLine();
(2017, 10, 16) 和 (2018, 1, 15) 应该显示为 3 months 但它们显示为 2 个月零 30 天(我'已尝试将 +1 添加到 period.Days 但在我这样做后显示为 31 天)。我需要在显示格式时包含结束日期。
有什么我可以用来实现我需要的吗? 我需要显示正确的格式:2 年 11 个月 3 天
【问题讨论】:
-
它在您的链接中显示或 3 个月包括结束日期。也许nodatime 不包括最后一天,但计算了该日期直到 的跨度。如果是这样,我想你可以在
end上加一天? -
月份并不总是……天,所以 16 号到 15 号确实比一个月少一天。 (
if days > 30 (which would add a month)没有意义,几个月不是固定的 30 天) -
您需要将一个月固定为 30 天,将一年固定为 365 天才能做您想做的事。在此之后,计算两个日期之间的总天数。
-
@FelipeDeveza 想到了,但如果可能的话我想显示正确的格式,我需要包括闰年和月份(30-31)中的日变化