java - 在 while 循环中使用日历?

标签 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.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/

相关文章:

java - While 循环不更新 TreeMap 的值

java - 在 while 循环中保存值

java - Oracle 表被 Hibernate 丢弃;从回收站闪回到DB。出现错误 "SQL Error: 942, SQLState: 42000"

带 while 循环的 PHP 捐赠表

javascript - 自动日历 php html

android - 我想从 Android 应用程序打开日历应用程序

javascript - Outlook Rest Api — 获取特定时区的日历 View (REST)

javadoc 子集/java 库组织

java - 在android中将书面文本发送到屏幕

java - 与 Arrays.asList() 不兼容的类型