java - Java 中的 LocalDateTime 类和 Period

标签 java period localdatetime

有这么简单的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/

相关文章:

php - 展开文件名以分隔名称和扩展名在 PHP 中不起作用?

java - 有没有一种直接的方法可以将 java.time.Period 转换为 java.time.Duration?

java - 如何处理 API 中以不同格式返回日期时间的 LocalDateTime?

arrays - 求序列的周期

java - 如果提前 1、2、3、4 分钟,如何将其四舍五入到最接近的 5 分钟间隔?

java - java中是否可以根据LocalDateTime打印某个字符串?

java - 如何在vaadin中显示文本文件

java - 将嵌套 for 循环减少为单个 for 循环

java - 用于在字符串中查找模式的正则表达式

java - 如何正确处理 Java 中 Bing 搜索 API 的响应?