java - 无限循环试图遍历 Java 中的日期

标签 java date for-loop

我正在尝试遍历日期但没有成功,因为发生无限循环并且它不会停止在数据库中创建记录。为什么?

我有以下方法,该方法将作为参数传递的日期递增 1,然后返回更新后的日期。

public static Date addDays(Date date, int days) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.DATE, days);
    return cal.getTime();
}

然后我以这种方式在 for 循环中使用它...

for (Date initDate = fromDate; initDate.before(toDate); addDays(initDate, 1)) {
    // Do something...
}

fromDate 和 toDate 是从 JTextField 中以这种方式解析为 sql.Date 的值。

private java.sql.Date fechaParser(String f) {
    SimpleDateFormat formatDate = new SimpleDateFormat("dd/MM/yyyy");
    Date date;

    try {
        date = formatDate.parse(f);
        java.sql.Date sqlDate = new java.sql.Date(date.getTime());

        return sqlDate;
    } catch (ParseException e) {
        JOptionPane.showMessageDialog(null, "Wrong date format.");
        e.printStackTrace();
    }

    return null;
}

最佳答案

您的 addDays() 函数返回一个新日期而不是更改参数一。

因此,您需要将 for 循环的增量部分从此更改为:

for ( ...; addDays(initDate, 1)) { ...

为此:

for ( ...; initDate = addDays(initDate, 1)) { ...

关于java - 无限循环试图遍历 Java 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009585/

相关文章:

java - 如何确保文件夹名称或文件夹路径有效?

java - 如何控制log4j中的日志控制台输出

javascript - .getTime 不是函数

mysql - MySQL查询中如何选择特殊日期记录

java - 将日历设置为日期变量中的值

python - 为什么我的列表在我尝试 append 它们时没有加入 Python

java - 在 DataFlow 中获取上一个窗口数据

java - 删除项目后删除数组中的 "hole"

python - 循环内部 lambda

java - 理解for循环逻辑