Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
公历java中的错误_Java - Fatal编程技术网

公历java中的错误

公历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

我正试图通过将于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.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开始