Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在Java中迭代日期的无限循环_Java_Date_For Loop - Fatal编程技术网

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

尝试在Java中迭代日期的无限循环,java,date,for-loop,Java,Date,For Loop,我正在尝试迭代日期,但没有成功,因为发生了inifite循环,它不会停止在数据库中创建记录。为什么? 我有下面的方法,它将作为参数传递的日期增加1,然后返回更新的日期 public static Date addDays(Date date, int days) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, days); return cal.g

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

我有下面的方法,它将作为参数传递的日期增加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是通过这种方式解析为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;
}
addDays函数返回一个新日期,而不是将参数更改为一个

因此,您需要从以下内容更改for循环的增量部分:

for ( ...; addDays(initDate, 1)) { ...
为此:

for ( ...; initDate = addDays(initDate, 1)) { ...
addDays函数返回一个新日期,而不是将参数更改为一个

因此,您需要从以下内容更改for循环的增量部分:

for ( ...; addDays(initDate, 1)) { ...
为此:

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

公认的答案是正确的

从Java8和更高版本开始,Java.util.Date/.Calendar类现在已经过时

java.time 内置于Java8和更高版本中的框架取代了麻烦的旧Java.util.Date/.Calendar类。新类的灵感来源于一个非常成功的框架,该框架旨在作为其继承者,在概念上类似,但经过了重新设计。定义为。由项目扩展。看

首先,我们使用模式定义一个格式化程序,以匹配预期的输入字符串

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
time框架包含一个类来表示仅日期的值,而不表示一天中的时间:。该类上的静态方法可以解析

String input = "05/07/2013";
LocalDate localDate_Start = LocalDate.parse( input , formatter );
如果用户给我们错误的文本输入,该方法将抛出错误。因此,我们应该捕获并处理该异常

try{ 
    LocalDate localDate_Start = LocalDate.parse( input , formatter );
} catch ( DateTimeParseException e ) {
    // … handle the exception …
}
LocalDate类包括一个用于添加天数的plusDays方法

LocalDate localDate_Stop = localDate_Start.plusDays( someNumberOfDays );
顺便说一句,在日期时间工作中,我们通常使用半开放式方法,其中开始是包含的,而结束是独占的。例如,一周的时间从星期一到下一个星期一,但不包括下一个星期一

对我来说,while循环比for循环更有意义

要做一些数据库工作,我们必须将java.time.LocalDate转换为java.sql.Date。有一天,JDBC驱动程序将被更新,以直接处理java.time类型,但在此之前,我们必须进行转换。查找新添加的转换方法,例如


公认的答案是正确的

从Java8和更高版本开始,Java.util.Date/.Calendar类现在已经过时

java.time 内置于Java8和更高版本中的框架取代了麻烦的旧Java.util.Date/.Calendar类。新类的灵感来源于一个非常成功的框架,该框架旨在作为其继承者,在概念上类似,但经过了重新设计。定义为。由项目扩展。看

首先,我们使用模式定义一个格式化程序,以匹配预期的输入字符串

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
time框架包含一个类来表示仅日期的值,而不表示一天中的时间:。该类上的静态方法可以解析

String input = "05/07/2013";
LocalDate localDate_Start = LocalDate.parse( input , formatter );
如果用户给我们错误的文本输入,该方法将抛出错误。因此,我们应该捕获并处理该异常

try{ 
    LocalDate localDate_Start = LocalDate.parse( input , formatter );
} catch ( DateTimeParseException e ) {
    // … handle the exception …
}
LocalDate类包括一个用于添加天数的plusDays方法

LocalDate localDate_Stop = localDate_Start.plusDays( someNumberOfDays );
顺便说一句,在日期时间工作中,我们通常使用半开放式方法,其中开始是包含的,而结束是独占的。例如,一周的时间从星期一到下一个星期一,但不包括下一个星期一

对我来说,while循环比for循环更有意义

要做一些数据库工作,我们必须将java.time.LocalDate转换为java.sql.Date。有一天,JDBC驱动程序将被更新,以直接处理java.time类型,但在此之前,我们必须进行转换。查找新添加的转换方法,例如

initDate=addDaysinitDate,1??initDate=addDaysinitDate,1??