我必须在特定日期范围之间为每个月的每一天创建表格(例如,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的新手,所以不太确定我在这里做错了什么。任何建议都会非常有用!!!
谢谢!
答案 0 :(得分:5)
这不是你的问题吗?
for(DateTime month=startDate;startDate.isBefore(endDate);month=month.plusMonths(1)) {
您正在递增month
,但要比较startDate
的值,该值不会发生变化。
我不太确定你想要达到的目标,但是Joda应该允许你在几天,几周,几个月内进行迭代,只需在初始日期添加一天(plusDays(1)
)。 / p>