特定年份的某个月中的天数不起作用

时间:2015-04-22 18:12:35

标签: java date java-8

注意不要将其标记为重复,我知道这是重复的问题,但我没有从it 获得帮助。

我想计算特定年份的一个月中的天数。我看了this,但正常工作。我试过跟着

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));

    }
}

我的控制台

Enter month: 2
Enter year: 2000
Number of days are: 31 /// Wrong

Enter month: 10
Enter year: 1999
Number of days are: 30 // Correct

我知道还有另外一种方法,即手动计算,但我想像上面那样做。如果我做错了,请告诉我。

P.S:我正在使用JAVA-8。

3 个答案:

答案 0 :(得分:10)

由于您使用的是Java 8,我建议使用新的日期/时间API,java.time,特别是其YearMonth类:

ldply(models, function(x) {r.sq <- summary(x)$r.squared
                           intercept <- summary(x)$coefficients[1]
                           beta <- summary(x)$coefficients[2]
                           data.frame(r.sq, intercept, beta)})
#  state        r.sq intercept        beta
#1    CA 0.230696121 0.4915617 -0.12343947
#2    NY 0.003506936 0.1971734 -0.01227367

答案 1 :(得分:7)

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-

答案 2 :(得分:0)

以下将确实有效...

公共类NumberOfDays

{

public static void main(String g [])

{

扫描仪扫描仪=新扫描仪(System.in);

    int days,month,year,date;

    System.out.println("enter year= ");
    year=scanner.nextInt();

    System.out.println("enter month= ");
    month=scanner.nextInt();

    date=1;

    Calendar calendar=Calendar.getInstance();

    calendar.set(year, (month-1), date);

    days=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

    System.out.println("max day= "+days);
}

}