Java Joda - 尝试遍历日期,月份和年份时的无限迭代

时间:2014-02-25 11:24:57

标签: java sql datetime jodatime

我必须在特定日期范围之间为每个月的每一天创建表格(例如,2012-01-30至2013-04-30)。我正在尝试使用三个for循环和DateTime isBefore方法来执行此操作,但是我的循环无限运行(尽管日期,月份和年份按其应有的方式递增)。我在下面写的代码片段,

DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm");
DateTime startDate = dtf.parseDateTime(startDateTime);
DateTime endDate = dtf.parseDateTime(endDateTime);
try{

    for(DateTime y=startDate;y.isBefore(endDate);y=y.plusYears(1)) {
        for(DateTime month=startDate;startDate.isBefore(endDate);month=month.plusMonths(1)) {
           for(DateTime date=startDate;startDate.isBefore(endDate);date=date.plusDays(1)){
                String sqlStmt = "CREATE TABLE IF NOT EXISTS...
                ...
            }
        }
    }
} catch (SQLException e) {

StackTraceElement stack = e.getStackTrace()[2];

  }

我的表格是按照我想要的方式创建的,因此我正在尝试执行的sqlstmt没有问题,只是一旦遇到endDate,循环就不会终止。我是Java的新手,所以不太确定我在这里做错了什么。任何建议都会非常有用!!!

谢谢!

1 个答案:

答案 0 :(得分:5)

这不是你的问题吗?

 for(DateTime month=startDate;startDate.isBefore(endDate);month=month.plusMonths(1)) {

您正在递增month,但要比较startDate的值,该值不会发生变化。

我不太确定你想要达到的目标,但是Joda应该允许你在几天,几周,几个月内进行迭代,只需在初始日期添加一天(plusDays(1))。 / p>