SimpleDateFormat 给出错误格式的输出

SimpleDateFormat giving a wrong formatted output

我有一个函数可以输入一个字符串值,例如 3-2020。我想将此字符串解析为日期,并使用 SimpleDateFormat class 将其格式更改为类似 March-2020 的格式。这是我用于此任务的代码:

public String getCurrentMonth(String day) throws ParseException {
    Date today = new SimpleDateFormat("MM-YYYY").parse(day);
    return new SimpleDateFormat("MMMM-YYYY").format(today);
}

但它给出了一个非常不同的输出字符串。当输入为 4-2020 时,它 returns 的值为 December-2020today 变量的值为 Sun Dec 29 00:00:00 GMT+05:30 2019。日期差异很大。为什么会这样?以及如何解决这个问题?

请用这个小y代替Y

Date today = new SimpleDateFormat("MM-yyyy").parse("04-2020");
System.out.println(new SimpleDateFormat("MMMM-yyyy").format(today));

Y 是星期年的格式。您似乎打算使用 y,这是年份的格式:

public String getCurrentMonth(String day) throws ParseException {
    Date today = new SimpleDateFormat("MM-yyyy").parse(day);
    return new SimpleDateFormat("MMMM-yyyy").format(today);
}