java - 为什么日期自动加1个月?

标签 java date calendar

基本上,我希望我的结果是我在 2012-10-23 打印的结果。然而,它是非常有线的。 这是我的代码:

SimpleDateFormat ft = new SimpleDateFormat("YYYY-MM-dd");

Calendar cal = Calendar.getInstance();
cal.set(2012, 10, 22);
cal.add(Calendar.DATE, 1);
Date startDate = new Date();

startDate = cal.getTime();

String date = ft.format(startDate).toString();
System.out.println(date);

我想打印2012-10-23,但结果是2012-11-23。

有人能告诉我为什么它会自动增加 1 个月吗?谢谢。

最佳答案

Calendar 类(class)月份从 0 开始,而不是从 1 开始,因此当将月份设置为 10 时,您设置的不是 10 月而是 11 月。

将代码更改为

cal.set(2012, 9, 22);

或者更好

cal.set(2012, Calendar.OCTOBER, 22);

更多信息:

关于java - 为什么日期自动加1个月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18422161/

相关文章:

javascript - 转换数据 JavaScript

java - 在 Eclipse 中的特定行号处打开 XML 文件

java - Android:无法将图像粘贴到 eclipse 中的drawable-hdpi 文件夹

Python - 在字符串中查找日期

date - gnuplot 叠加同一时间不同日期的图?

java - CalenderView 不存在 - 试图实现 DatePickerDialog

java - 将“伪”时间戳存储到数据库中

java - 向 java.util.Calendar 添加真实的天数(不是一年中的天数)

java - 增加 Java 堆大小的速度

java - 正在加载 rds-combined-ca-bundle.pem。来自AWS lambda java中的资源文件夹