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

时间:2012-11-29 10:34:57

标签: 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);
}

效果很好但是当月份= 1(即2月份)时,月份名称是3月而不是2月!为什么?

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

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

请帮助我....

2 个答案:

答案 0 :(得分:4)

根据您对函数的调用方式(例如,使用当前日期为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);
}

答案 1 :(得分:0)

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

if(day >0)
{
day =day -1;
}