[英]Using Calendar in while-loop?
除了最后的输出,下面的代码可以实现我想要的功能。
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循环条件以使LAST项成为
1986年12月27日
但无济于事。
期望的输出与上面的输出相同,只是没有1987年的日期。
您的循环正在执行检查后执行添加。 因此,您可能只想:
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));
}
输出:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.