如何在Java中将日期增加6个月

时间:2013-06-05 05:32:48

标签: java date datetime

我希望在Java中增加6个月,目前我正在使用下面的代码。但它总是在第一个月印刷。你能告诉我这里的错误吗?我是Java的初学者。

这是我的输出:

当前日期:2013年1月11日

6个月后的日期:2013年7月11日

预期产出:

当前日期:2013年5月11日

6个月后的日期:2013年11月11日

        String dt = "11-05-2013";
        DateFormat formatter = new SimpleDateFormat("dd-mm-yyyy"); 
        Date date = null;
        try {
            date = (Date)formatter.parse(dt);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        Calendar now = Calendar.getInstance();    
        now.setTime(date);



        System.out.println("Current date : " + now.get(Calendar.DATE)+ "-" +(now.get(Calendar.MONTH) + 1) + "-"
             + now.get(Calendar.YEAR));

        now.add(Calendar.MONTH, 6);

        System.out.println("date after 6 months : " +  now.get(Calendar.DATE)+"-" + (now.get(Calendar.MONTH) + 1) + "-"
             + now.get(Calendar.YEAR));

2 个答案:

答案 0 :(得分:11)

尝试使用大写M:

DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); 

答案 1 :(得分:1)

希望你能解决这个问题。作为替代答案的任何方式,我建议使用Joda API。请查看文件。 http://joda-time.sourceforge.net/apidocs/index.html?org/joda/time/DateTime.html。只需使用方法plusMonths(int months)将所需的月数添加到给定的日期时间。

Joda提供日期差异等其他功能。它非常适合普通用户。阅读http://joda-time.sourceforge.net/userguide.html

的更多信息