关于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);
}
}
------解决方案--------------------
楼主的方法不对,
最大值被定义为 get 方法为任何可能时间值返回的最大值
当月天数需要根据年月判断,确切讲要根据年份判断是否润平年,然后才能给定2月份的天数
------解决方案--------------------
为什么实现不了?错在哪里
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;
}
------解决方案--------------------
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