ほとんどの場合、これら 2 つの方法は互いに逆です。
Temporal Temporal.plus(long, TemporalUnit)
long Temporal.until(Temporal, TemporalUnit)
たとえば、1 月 1 日から開始します。
System.out.println("1-JAN plus 1 month: " +
LocalDate.of(2017, 1, 1).plus(1, ChronoUnit.MONTHS));
System.out.println("1-JAN until 1-FEB in months: " +
LocalDate.of(2017, 1, 1).until(LocalDate.of(2017, 2, 1), ChronoUnit.MONTHS));
それらは互いに逆です。
1 月 1 日プラス 1 か月: 2017-02-01
1 月 1 日から 2 月 1 日までの月数: 1 // GOOD
ただし、この例では、1 月 31 日から開始します。
System.out.println("31-JAN plus 1 month: " +
LocalDate.of(2017, 1, 31).plus(1, ChronoUnit.MONTHS));
System.out.println("31-JAN until 28-FEB in months: " +
LocalDate.of(2017, 1, 31).until(LocalDate.of(2017, 2, 28), ChronoUnit.MONTHS));
それらは互いに逆ではありません。
1 月 31 日プラス 1 か月: 2017 年 2 月 28 日 // 悪い? 3月1日までに制限すべきですか?
1 月 31 日から 2 月 28 日までの月数: 0 // それとも悪いことですか? 1 にする必要がありますか?
どうすればお互いを逆にすることができますか?