日期类型的值按 1 个月递增
Value of Date type is getting icremented by 1 month
我正在尝试获取日期类型的变量。但是我得到的输出会自动增加一个月。
这是我正在做的
Date d1 = new Date(2020,8,15);
System.out.println(d1);
d1 的值即将 2020-09-15
而不是 2020-08-15
。
Date
需要几个月从 0 到 11 而不是 1 到 12。所以,new Date(2020,08,15);
实际上是 15th September 2020
当日期为 printed/formatted 时,将打印实际月份(值 1 到 12)。
根据docs
A month is represented by an integer from 0 to 11; 0 is January, 1 is February, and so forth; thus 11 is December.
注意 :总是更喜欢 java.time API 而不是 java.util.Date
不幸的是,月份值从 0
开始,这使得使用过时的 API(例如 java.util.Date
)时 8
为九月。
这意味着要获得所需的输出,您必须编写(不带前导零)
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 d1 = new Date(2020,8,15);
System.out.println(d1);
d1 的值即将 2020-09-15
而不是 2020-08-15
。
Date
需要几个月从 0 到 11 而不是 1 到 12。所以,new Date(2020,08,15);
实际上是 15th September 2020
当日期为 printed/formatted 时,将打印实际月份(值 1 到 12)。 根据docs
A month is represented by an integer from 0 to 11; 0 is January, 1 is February, and so forth; thus 11 is December.
注意 :总是更喜欢 java.time API 而不是 java.util.Date
不幸的是,月份值从 0
开始,这使得使用过时的 API(例如 java.util.Date
)时 8
为九月。
这意味着要获得所需的输出,您必须编写(不带前导零)
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