我希望在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));
答案 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
的更多信息