有这么简单的Java类:
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.of(2017, 11, 26, 15, 38);
Period period = Period.ofYears(1).ofMonths(2).ofDays(3);
dateTime = dateTime.minus(period);
System.out.println(dateTime);
}
}
这会导致 2017-11-23T15:38
谁能解释一下,为什么减去日期而年份和月份却没有?
最佳答案
因为每三个方法
(ofYears(1) &
ofMonths(2)
& ofDays(3))
返回一个 Period 类的实例
每次您在 Period period
中调用另一个方法值时都会被覆盖。
如果说 ofYears(1) 返回名为 a 的 Period 类的实例,则 ofMonths(2)
也返回一个新实例并覆盖他最初的实例。因此,最后一个保留并存储到 period
变量中。
这就是为什么只有 ofDays(3)
显示效果的原因。
如果你想做同样的事情,你应该尝试调用下面的方法
`public static Period of(int years,
int months,
int days)
关于java - Java 中的 LocalDateTime 类和 Period,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62859648/