除了最后一个输出之外,下面的代码执行了我想要的操作。
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 循环条件以获得最后一个条目为
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 - 在 while 循环中使用日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38861241/