公历java中的错误
我正试图通过将于2015年4月31日返回的公历java中的错误,java,Java,我正试图通过将于2015年4月31日返回的GregoriaCalendar将89天添加到CurrentDate。下面是代码片段 Calendar now = Calendar.getInstance(); String dt="31012013"; now.set(Integer.parseInt(dt.substring(4)),Integer.parseInt(dt.substring(2,4)),Integer.parseInt(dt.substring(0,2))); now.a
GregoriaCalendar
将89天添加到CurrentDate
。下面是代码片段
Calendar now = Calendar.getInstance();
String dt="31012013";
now.set(Integer.parseInt(dt.substring(4)),Integer.parseInt(dt.substring(2,4)),Integer.parseInt(dt.substring(0,2)));
now.add(Calendar.DATE, 89);
String matdate=Integer.toString(now.get(Calendar.DATE))+ "/"+ (now.get(Calendar.MONTH) ) +"/" + now.get(Calendar.YEAR);
执行此代码后,
matdate
值为2013年4月31日这是因为java.util.Calendar
月份从0开始,而不是从1开始,也就是说,4是5月。此外,格式化日期的最佳方法是java.text.simpleDataFormat
String matdate = new SimpleDateFormat("dd/MM/yyyy").format(now.getTime()));
或者最好使用与日历和时间相关的代码库。这是因为
java.util.calendar
月份从0开始,而不是从1开始,也就是说,4是5月。此外,格式化日期的最佳方法是java.text.simpleDataFormat
String matdate = new SimpleDateFormat("dd/MM/yyyy").format(now.getTime()));
或者更好地使用与日历和时间相关的代码库。您可能需要查看JodaTime以进行这些操作,它简化了添加日期等操作。很抱歉,这让人困惑:您在文章开头说的结果是2015年4月31日,最后说的是2013年4月31日。请澄清您的结果和预期结果。通常情况下,编译器有非常非常罕见的错误,尤其是当它们多年来一直在生产和大量使用且版本众多时。日历类月份从0开始,而不是1。您可能希望查看这些操作的JodaTime,它简化了添加日期之类的事情。很抱歉,这让人困惑:您在帖子开头说的结果是2015年4月31日,最后说的结果是2013年4月31日。请澄清您的结果和预期结果。通常情况下,编译器有非常非常罕见的错误,尤其是当它们多年来一直在生产和大量使用并且版本很多时。日历类月份从0开始,而不是从1开始