Java 在while循环中使用日历?
下面的代码实现了我想要的功能,除了最后的输出Java 在while循环中使用日历?,java,while-loop,calendar,Java,While Loop,Calendar,下面的代码实现了我想要的功能,除了最后的输出 Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(1986, 8, 20); int year = cal.get(Calendar.YEAR); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); while (year >= cal.get(Calendar.YEA
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(1986, 8, 20);
int year = cal.get(Calendar.YEAR);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
while (year >= cal.get(Calendar.YEAR)) {
cal.add(Calendar.DAY_OF_MONTH, 7);
System.out.println(sdf.format(cal.getTime()));
}
以下是输出:
1986-09-27
1986-10-04
1986-10-11
1986-10-18
1986-10-25
1986-11-01
1986-11-08
1986-11-15
1986-11-22
1986-11-29
1986-12-06
1986-12-13
1986-12-20
1986-12-27
1987-01-03
我将使用这个while循环来执行不可逆的代码,我希望它能在今年不是1987年的时候执行。然而,这里显示的是1987,我尝试修改while循环条件,以获得最后一个条目
一九八六年十二月二十七日
但是没有用
所需的输出与上面的输出相同,只是没有1987年的日期。您的循环在执行检查后正在执行添加。所以你可能只是想:
while (year >= cal.get(Calendar.YEAR)) {
System.out.println(sdf.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH, 7);
}
但是,这将更改所使用的第一个值-因此,如果您想要与当前打印的第一个值相同的值,则可能需要在循环开始之前进行额外的
add
调用。您的循环在执行检查后执行add。所以你可能只是想:
while (year >= cal.get(Calendar.YEAR)) {
System.out.println(sdf.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH, 7);
}
但是,这将更改所使用的第一个值-因此,如果您想要与当前打印的第一个值相同的值,则可能需要在循环开始之前进行额外的
add
调用。java.time(java 8)备选方案:
for(LocalDate date = LocalDate.of(1986, 9, 27);
date.getYear() < 1987;
date = date.plusWeeks(1)) {
System.out.println(DateTimeFormatter.ISO_DATE.format(date));
}
java.time
(java 8)备选方案:
for(LocalDate date = LocalDate.of(1986, 9, 27);
date.getYear() < 1987;
date = date.plusWeeks(1)) {
System.out.println(DateTimeFormatter.ISO_DATE.format(date));
}
您希望循环跳过1987年还是在停止1987@SamOrozco我想让它停在1987年你想让循环跳过1987年还是停在1987年1987@SamOrozco我希望它停在1987年,因为其他人告诉我,日历在我的另一个问题上已经过时了,所以我打算用这个来代替。谢谢你,乔恩!我打算用这个来代替,因为其他人告诉我,日历在我的另一个问题上已经过时了。谢谢你,乔恩!