Date currentDate = new Date(); System.out.println(currentDate); // 创建 Calendar 对象 Calendar calendar = Calendar.getInstance(); // 设置当前日期 calendar.setTime(currentDate); // 创建日期列表 List<String> dateList = new ArrayList<>(); // 循环往后推 12 个月 for (int i = 0; i < 12; i++) { // 获取当前日期的年份 int year = calendar.get(Calendar.YEAR); // 获取当前日期的月份 int month = calendar.get(Calendar.MONTH) + 2; // 拼接结果日期 String resultDate = year + "年" + month + "月"; // 将结果日期添加到列表中 dateList.add(resultDate); // 将日期往后推一个月 calendar.add(Calendar.MONTH, 1); } // 输出结果日期列表 for (String date : dateList) { System.out.println(date); }为啥会有13月
时间: 2024-02-14 16:14:48 浏览: 130
在代码中,月份是通过获取 Calendar 对象的 MONTH 字段来获取的,并且在拼接结果日期时月份加了 2。这里需要注意的是,Calendar 对象中 MONTH 字段的取值范围是 0-11,表示一年中的 12 个月,其中 0 表示一月,11 表示十二月。因此,在拼接结果日期时,应该将获取到的月份加 1,而不是加 2,这样才能得到正确的月份。将拼接结果日期的代码修改为以下代码即可:
```
// 获取当前日期的月份
int month = calendar.get(Calendar.MONTH) + 1;
// 拼接结果日期
String resultDate = year + "年" + month + "月";
```
这样就不会出现 13 月的情况了。
相关问题
java 用Date currentDate = new Date();获取了当前时间后,从当前时间减15分钟
在Java中,如果你想要从当前时间减去15分钟,但是已经使用了旧版的`java.util.Date`类,可以这样做:
```java
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// 获取当前系统时间
Calendar calendar = Calendar.getInstance();
// 添加负15分钟
calendar.add(Calendar.MINUTE, -15);
// 将Calendar对象转换回Date
Date currentDate = calendar.getTime();
// 打印当前时间(注意:Date类没有自带的toString()方法,需要自定义)
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(currentDate));
}
}
```
在这个示例中,首先创建了一个`Calendar`实例并设置为当前时间,然后通过`add()`方法减去15分钟。最后,我们使用`getTime()`方法获取调整后的日期并将其转换为`Date`格式。
然而,推荐使用`java.time`包里的`LocalDateTime`和`ZonedDateTime`代替`java.util.Date`,因为它们有更好的特性和性能。
Date startDate = calendar.getTime(); 怎么获得日期
`calendar.getTime()` 返回一个 `Date` 对象,表示该 `Calendar` 实例所代表的日期和时间。可以使用该对象获取日期。例如:
```java
// 获取当前日期
Calendar calendar = Calendar.getInstance();
Date currentDate = calendar.getTime();
System.out.println(currentDate); // 输出当前日期
// 获取指定日期
calendar.set(2021, Calendar.JANUARY, 1); // 设置为2021年1月1日
Date date = calendar.getTime();
System.out.println(date); // 输出2021-01-01
```
注意,`Calendar` 类的月份从0开始,即0表示1月。因此,上面的代码中`Calendar.JANUARY`表示1月份。
阅读全文