3

我想在 Java 中将月份增加 6,目前我正在使用以下代码。但它总是在第一个月打印。你能告诉我我在这里做错了什么吗?我是Java的初学者。

这是我的输出:

当前日期 : 11-1-2013

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

预期输出:

当前日期:11-05-2013

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));
4

2 回答 2

11

试试大写 M:

DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); 
于 2013-06-05T05:35:57.980 回答
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

于 2013-06-05T05:44:12.567 回答