在Java中,我如何按6个月的时间激励员工
我想在Java中增加6个月,目前我正在使用下面的代码。但它总是在第一个月印刷。你能告诉我我在这里犯了什么错误吗?我是Java初学者 这是我的输出: 当前日期:2013年11月1日 6个月后的日期:2013年11月7日 预期产出: 当前日期:2013年5月11日 6个月后的日期:2013年11月11日在Java中,我如何按6个月的时间激励员工,java,date,datetime,Java,Date,Datetime,我想在Java中增加6个月,目前我正在使用下面的代码。但它总是在第一个月印刷。你能告诉我我在这里犯了什么错误吗?我是Java初学者 这是我的输出: 当前日期:2013年11月1日 6个月后的日期:2013年11月7日 预期产出: 当前日期:2013年5月11日 6个月后的日期:2013年11月11日 String dt = "11-05-2013"; DateFormat formatter = new SimpleDateFormat("dd-mm-yyyy")
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));
尝试使用大写字母M:
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
希望你能解决这个问题。作为备选答案,我建议使用JodaAPI。请查看文件。只需使用plusMonths(int months)方法将所需的月数添加到给定的日期时间
Joda提供了额外的功能,如日期差等。它非常适合普通用户。阅读更多关于+1的内容我也认为是错误所在,你可以说目前他的月份被评估为分钟。非常感谢。。它现在可以工作:)干杯操作说明:mm代表分钟解析,mm代表月解析。@Luigimendoza感谢您验证我的大脑是否正常工作:)@AlexandreLavoie我最近晚上醒来时会发生这种情况(比如现在=\)@matsev不是重复的,只是一个解析错误:)另外,在修复格式化程序之后,您也可以使用它来输出日期:
formatter.format(now.getTime())
而不是获取单个字段。请向某人解释为什么+1
到日历。月份
?虽然这是完全正确的,但我发现仅仅为了解决这个问题而使用Joda API有点过分了。是的,我更喜欢对JavaDate
和Calendar
类使用JodaAPI。刚才提到Joda是普通Date类的替代品。它解决了许多复杂的java日期问题。