日期类型的值在1个月内增加

问题描述

我正在尝试使用Date类型的变量。但是我得到的输出自动增加一个月。 这是我在做什么

Date d1 = new Date(2020,8,15);
System.out.println(d1);

d1的值是2020-09-15,而不是2020-08-15

解决方法

不幸的是,月份值从0开始,使用过时的API(例如8)时,java.util.Date成为9月。

这意味着要获得所需的输出,您必须编写(不带前导零)

Date d1 = new Date(2020,9,15);
System.out.println(d1);

幸运的是,现在有java.time

您可以像这样使用它

public static void main(String[] args) {
    LocalDate d1 = LocalDate.of(2020,8,15);
    System.out.println(d1);
}

它会输出

2020-08-15
,

Date从0到11而不是1到12花费了几个月。因此,new Date(2020,08,15);实际上是15th September 2020

当日期打印/格式化时,将打印实际的月份(值1到12)。 根据{{​​3}}

一个月由0到11之间的整数表示; 0是一月,1是二月,依此类推;因此11月是12月。

注意:始终首选docs胜过java.util.Date