在格鲁里亚日历的Java中的错误

0 java

我想89天内陆续新增到CurrentDate通过GregorianCalendar其返回31/04/2015.以下是代码段.

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); 
Run Code Online (Sandbox Code Playgroud)

执行此代码后,matdate值将于31/04/2013发布

Evg*_*eev 5

这是因为java.util.Calendar月份从0开始而不是1,即4是5月.除了格式化日期的最佳方法是java.text.SimpleDateFormat

    String matdate = new SimpleDateFormat("dd/MM/yyyy").format(now.getTime()));
Run Code Online (Sandbox Code Playgroud)

或者更好地使用Joda-Time库来处理日历和时间相关的代码.