我正在尝试从给定的开始和结束日期生成日期列表。我发现堆栈溢出的解决方案。但是,代码从1月开始分配。我无法找到原因。请帮帮我。
开头,结尾是带有格式的字符串' yyyy-mm-dd' 。 持续时间是 Arraylist 我用来存储日期。
List<Date> duration = new ArrayList<Date>();
List<Date> date_req = new ArrayList<Date>();
Calendar start = Calendar.getInstance();
DateFormat formatter = new SimpleDateFormat("yyyy-mm-dd");
Date date_st = formatter.parse(starting);
Date date_en = formatter.parse(ending);
int init=0;
start.setTime(date_st);
Calendar end = Calendar.getInstance();
end.setTime(date_en);
end.add(Calendar.DAY_OF_YEAR, 1); //Add 1 day to endDate to make sure endDate is included into the final list
while (start.before(end)) {
duration.add(init,start.getTime());
start.add(Calendar.DAY_OF_YEAR, 1);
init=init+1;
}
System.out.println(duration);
感谢。
答案 0 :(得分:0)
你的格式应该是
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd")
使用mm for Month是您从JAN
开始的一年的原因答案 1 :(得分:0)
mm
代表分钟,几个月你必须使用MM
。
答案 2 :(得分:0)
您的代码可以使用以下微小更改:
public static void main(String[] args) throws ScriptException,
FileNotFoundException, ParseException {
List<Date> duration = new ArrayList<Date>();
String starting = "2014-04-01";
String ending = "2014-04-30";
DateFormat formatter = new SimpleDateFormat("yyyy-mm-dd");
Date date_st = formatter.parse(starting);
Date date_en = formatter.parse(ending);
int init = 0;
Calendar start = Calendar.getInstance();
start.setTime(date_st);
Calendar end = Calendar.getInstance();
end.setTime(date_en);
end.add(Calendar.DAY_OF_YEAR, 1); // Add 1 day to endDate to make sure
// endDate is included into the
// final list
while (start.before(end)) {
duration.add(start.getTime());
start.add(Calendar.DAY_OF_YEAR, 1);
}
for (Date date : duration) {
System.out.println(date);
}
}