Android:Java SimpleDateFormat:为什么二月是三月?

Mer*_*yth 0 java android simpledateformat

我无法解决这个问题。

我写了这段代码:

public static String getMonthName(int year, int month, int day){
    Locale locale = Locale.getDefault();
    SimpleDateFormat sdf = new SimpleDateFormat("MMMM",locale);
    Date date = new Date();
    date.setDate(day);
    date.setMonth(month);
    date.setYear(year);
    return sdf.format(date);
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是当月份 = 1(即二月)时,月份名称是三月而不是二月!为什么?

此代码适用于所有其他日期和月份...

还有另一种方法可以获得翻译的月份名称吗?

请帮我....

Den*_*ret 5

根据您调用函数的方式(例如,将当前日期用作 2013 年不存在的 2 月 29 日),您可以使月份自动递增。

我建议使用这个函数来避免这个问题:

public static String getMonthName(int month){
    Locale locale = Locale.getDefault();
    SimpleDateFormat sdf = new SimpleDateFormat("MMMM",locale);
    Date date = new Date();
    date.setDate(1);
    date.setMonth(month);
    date.setYear(2012);
    return sdf.format(date);
}
Run Code Online (Sandbox Code Playgroud)