calendar.getDisplayName 返回错误的日期

use*_*282 5 java calendar

下面是我的程序,当我输入相关的月份、日期和年份时,它返回错误的日期名称。

我在这里缺少什么?

我的程序

import java.util.Calendar;
import java.util.Locale;
import java.util.Scanner;

public class TimeTest {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String month = in.next();
        String day = in.next();
        String year = in.next();

        System.out.println(getDay(day, month, year));
    }

    private static String getDay(String day, String month, String year) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day));
        return calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());

    }
}      
Run Code Online (Sandbox Code Playgroud)


输出:

09
24
2018
Wednesday       
Run Code Online (Sandbox Code Playgroud)

它应该返回“星期一”,因为那是当天。

Nee*_*ain 5

假设它是9月,您将09作为月份传递,但实际上就日历类而言,它是8 月,因为月份是从日历类中开始的,依此类推。00(Jan), 01(Feb)...

因此,为了获得正确的输出,您需要通过

08 // September Month not August
24
2018
Run Code Online (Sandbox Code Playgroud)

这是您的运行代码