注意:Donot标记它重复,我知道它是重复的问题,但我没有得到它的帮助.
我想计算特定年份的一个月中的天数.我看了这个,但它不能正常工作.我试过跟随
public class NumOfDays {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter month: ");
int month = input.nextInt();
System.out.print("Enter year: ");
int year = input.nextInt();
Calendar mycal = new GregorianCalendar(year, month, 1);
System.out.println("Number of days are: " + mycal.getActualMaximum(Calendar.DAY_OF_MONTH));
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制台是
Enter month: 2
Enter year: 2000
Number of days are: 31 /// Wrong
Run Code Online (Sandbox Code Playgroud)
和
Enter month: 10
Enter year: 1999
Number of days are: 30 // Correct
Run Code Online (Sandbox Code Playgroud)
我知道还有另外一种方法,即手动计算,但我想像上面那样做.如果我做错了,请告诉我.
PS:我正在使用JAVA-8.
ass*_*ias 10
由于您使用的是Java 8,我建议使用新的日期/时间API,java.time,特别是它的YearMonth类:
YearMonth ym = YearMonth.of(2000, 2);
System.out.println(ym.lengthOfMonth()); //29 as expected
Run Code Online (Sandbox Code Playgroud)
2000年3月不是31天吗?正如文档所述,月份为零(http://docs.oracle.com/javase/8/docs/api/java/util/GregorianCalendar.html#GregorianCalendar-int-int-int-)
编辑:我很蠢,我以为你有一个月的天数.你需要使用getActualMaximum,而不是get.(http://docs.oracle.com/javase/8/docs/api/java/util/GregorianCalendar.html#getActualMaximum-int-)