无限循环试图在Java中迭代日期

Nic*_*oid 1 java for-loop date

我正在尝试迭代日期而没有成功,因为发生了一个inifite循环,它不会停止在数据库中创建记录.为什么?

我有以下方法,将一个日期作为参数传递,然后返回更新.

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

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

for (Date initDate = fromDate; initDate.before(toDate); addDays(initDate, 1)) {
    // Do something...
}
Run Code Online (Sandbox Code Playgroud)

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

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;
}
Run Code Online (Sandbox Code Playgroud)

Nay*_*uki 7

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

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

for ( ...; addDays(initDate, 1)) { ...
Run Code Online (Sandbox Code Playgroud)

对此:

for ( ...; initDate = addDays(initDate, 1)) { ...
Run Code Online (Sandbox Code Playgroud)