2010-05-31 120 views
5

你好,我有一个GregorianCalendar的问题。Java GregorianCalendar我做错了什么?错误的日期?

那里有什么问题?

结果是2010/6/1而不是2010/05/31?

package test; 

import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class Main { 

    public static void main(String[] args) { 
     Calendar cal = new GregorianCalendar(2010, 5, 31); 
     System.out.println(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH)); 
    } 

} 

回答

9

Java从0开始计数个月,因此5是6月。使用常量总是比较安全。所以我会写:

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31); 

这同样适用于您的日历打印输出。如果你这样做cal.get(Calendar.MONTH)你得到6意味7月。

1

这是因为月份数字为零,所以你试图设置6月31日,但6月只有30天,所以它被转换为7月1日。