关于java“月有几天”的demo,但实现不了。求解释

关于java“求一个月有几天”的demo,但实现不了。求解释
为什么实现不了?错在哪里

public class NumberOfMonth {

public static void main(String[] args) {
Date date=new Date();
// TODO Auto-generated method stub
System.out.println("请输入一个时间:");
Scanner sc = new Scanner(System.in);
String mydate =sc.next();
sc.close();
    DateFormat df = new SimpleDateFormat("yyyy-mm-dd");
    try {
 date = df.parse(mydate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    Calendar c1 = Calendar.getInstance();
    c1.setTime(date);
  int num=c1.getMaximum(Calendar.DAY_OF_MONTH);
    System.out.println(num);

 

}

}
------解决方案--------------------
楼主的方法不对,

getMaximum
public abstract int getMaximum(int field)
返回此 Calendar 实例给定日历字段的最大值。
最大值被定义为 get 方法为任何可能时间值返回的最大值。
最大值取决于日历系统实例的特定参数。 

最大值被定义为 get 方法为任何可能时间值返回的最大值

当月天数需要根据年月判断,确切讲要根据年份判断是否润平年,然后才能给定2月份的天数


public static void main(String[] args) {
Date date=new Date();
System.out.println("请输入一个时间:");
Scanner sc = new Scanner(System.in);
String mydate =sc.next();
sc.close();
DateFormat df = new SimpleDateFormat("yyyy-mm-dd");
try {
    date = df.parse(mydate);
} catch (ParseException e) {
e.printStackTrace();
}
int year = date.getYear();
int month = date.getMonth() + 2;
    System.out.println(getDays(year, month));
}

// 判断闰平年
static boolean isLeap(int year){
    if(((year%100==0)&&year%400==0)
------解决方案--------------------
((year%100!=0)&&year%4==0))
        return true;
    else
        return false;
}

//返月数天数
static int getDays(int year,int month){
    int days;
    int FebDay=28;
    if(isLeap(year))
        FebDay=29;
        switch(month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
             days=31;
             break;
            case 4:
            case 6:
            case 9:
            case 11:
             days=30;
             break;
            case 2:
             days=FebDay;
            break;
            default:
             days=0;
             break;
         }
     return days;
 }

------解决方案--------------------
引用:
谢谢大家的帮助,程序中存在错误,具体原因我也说不清,

    Calendar c1 = Calendar.getInstance();
改成Calendar c1 =new GregorianCalendar();  
结果就正确了。希望有人解释一下。



JapaneseImperialCalendar
static final int MAX_VALUES[] = {
        0, // ERA
292278994, // YEAR
DECEMBER, // MONTH
53, // WEEK_OF_YEAR
6, // WEEK_OF_MONTH
31, // DAY_OF_MONTH
366, // DAY_OF_YEAR
SATURDAY, // DAY_OF_WEEK
6, // DAY_OF_WEEK_IN
PM, // AM_PM