4

ほとんどの場合、これら 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 にする必要がありますか?


どうすればお互いを逆にすることができますか?

4

1 に答える 1