大多数情况下,这两种方法是互逆的:
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-JAN 加 1 个月:2017-02-01
1-JAN 到 1-FEB 月份:1 // 好
但是,在此示例中,从 31-JAN 开始:
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-02-28 // 不好?上限应该到 3 月 1 日吗?
1 月 31 日至 2 月 28 日(以月计):0 // 或者这很糟糕?应该是1?
我怎样才能使它们彼此相反?