问题描述
我正在尝试使用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