当前位置: 首页 > 知识库问答 >
问题:

从LocalDate中添加和减去句点不会产生相同的日期

苏乐
2023-03-14

我使用java 8本地日期和周期类来添加和删除年、月和日。为什么在某些情况下,如果添加周期到日期并删除相同的周期,java 8会返回另一个日期?

    LocalDate date = LocalDate.of(2023, 1, 30);
    Period period = Period.of(6, 1, 1);
    System.out.println(date.plus(period).minus(period));

为什么结果是2023-01-31而不是2023-01-30

共有1个答案

赵飞雨
2023-03-14

为什么在某些情况下,如果添加周期到日期,并删除正常周期java 8返回另一个日期?

因为日历算术就是这样工作的——月的长度不均匀,至少可以说这让事情变得棘手。

你在2023年1月30日之前加上“六年,一个月,一天”。你认为结果会怎样?可能有多种不同的选择。。。从逻辑上来说,你的意思是“2029年2月31日”,但这并不存在。。。所以API将其滚动至2029年3月1日。

现在从2029年3月1日减去6年1个月1天也有点含糊不清,但是把它定为2023年1月31日听起来很合理——如果你减去6年到2023年3月1日,然后1个月到2023年2月1日,然后1天到1月31日。

基本上:不要期望日历算术表现得像普通数学。这样不行。

 类似资料:
  • 问题内容: 我使用Java 8 LocalDate和Period类来添加和删除年,月和日。为什么在某些情况下,如果将Period添加到日期并删除相同的时间,则Java 8返回另一个日期? 为什么结果是2023-01-31而不是2023-01-30 问题答案: 为什么在某些情况下,如果将Period添加到日期并删除合理的时间,则Java 8返回另一个日期? 因为这就是日历计算的原理-几个月的长度是不

  • 我对日期及其从日期到LocalDate的转换有问题,主要错误在于1700年的日期。我试过两个不同的日期,每当1700年的时候,我就少了一天。 date dto它是一个检索查询日期的变量。但是该方法只获取dto变量作为输入参数。 我使用: 今年有什么问题?

  • 问题内容: 我想让用户使用JavaScript轻松添加和减去日期,以便按日期浏览其条目。 日期的格式为:“ mm / dd / yyyy”。我希望他们能够单击“下一步”按钮,并且如果日期为:“ 06/01/2012”,则在单击下一步时,它应该变为:“ 06/02/2012”。如果他们单击“上一个”按钮,则该按钮将变为“ 05/31/2012”。 它需要跟踪of年,每月的天数等。 有任何想法吗? 使

  • 我想让用户使用JavaScript轻松加减日期,以便按日期浏览条目。 日期的格式是:“mm/dd/yyyy”。我希望他们能够点击“下一步”按钮,如果日期是:“06/01/2012”,那么点击下一步,它应该变成:“06/02/2012”。如果他们点击“prev”按钮,那么它应该变成“05/31/2012”。 它需要跟踪闰年、一个月中的天数等。 有什么想法吗? P.S使用AJAX从服务器获取日期不是一

  • 问题内容: 想要改善这篇文章吗? 提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 有谁知道约会(例如今天)和回溯X天的简单方法吗? 因此,例如,如果我想计算今天之前5天的日期。 问题答案: 尝试这样的事情: 请注意,这将修改日期对象并返回更新日期的时间值。