Java GregorianCalendar我做错了什么?错误的日期?

问题描述:

你好,我有一个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)); 
    } 

} 

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

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

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

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

Toadd to the以上答案,因为在六月没有第31日日历促进它到下一个有效的一天,因为Calendar.setLenient默认为true。