0

我无法解决这个问题。

我写了这段代码:

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

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

这段代码在所有其他日子和几个月里都能很好地工作......

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

请帮我....

4

2 回答 2

5

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

我建议使用这个功能来避免这个问题:

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);
}
于 2012-11-29T10:36:25.733 回答
0

这是因为月份从零索引开始,所以你应该使用这个逻辑

if(day >0)
{
day =day -1;
}
于 2012-11-29T10:48:31.643 回答