日期从java开始到结束日期生成

时间:2014-04-22 09:00:00

标签: java

我正在尝试从给定的开始和结束日期生成日期列表。我发现堆栈溢出的解决方案。但是,代码从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); 

感谢。

3 个答案:

答案 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);
        }

    }