android中月份数的月份名称

And*_*oid 5 java android monthcalendar datepicker

将月份号码转换为月份时遇到问题如果月号为1或2,则仅返回3月份.但对于1,它应该返回2月对吗?以前我有同样的问题一天,但第二天它自动工作,我不喜欢?如何?但今天再次显示这样我需要一些帮助来修复它

public static String getMonthShortName(int monthNumber) {
    String monthName = "";

    if (monthNumber >= 0 && monthNumber < 12)
        try {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.MONTH, monthNumber);

            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM");
            //simpleDateFormat.setCalendar(calendar);
            monthName = simpleDateFormat.format(calendar.getTime());
        } catch (Exception e) {
            if (e != null)
                e.printStackTrace();
        }
    return monthName;
}
Run Code Online (Sandbox Code Playgroud)

如果此语句中的monthNumber为1或2

monthName = simpleDateFormat.format(calendar.getTime());
Run Code Online (Sandbox Code Playgroud)

它只返回3月(3月).但对于其他数字,它的工作正常.任何人都可以帮我解决这个问题吗?

Anc*_*tal 7

以下代码返回正确的月份名称.

Calendar cal=Calendar.getInstance();
SimpleDateFormat month_date = new SimpleDateFormat("MMMM");
int monthnum=5;
cal.set(Calendar.MONTH,monthnum);
String month_name = month_date.format(cal.getTime());

Log.e("",""+month_name);
Run Code Online (Sandbox Code Playgroud)

这里的输出是六月


cos*_*tru 4

出现此问题是因为 2 月还不到 30 天。

例如,今天运行(30.04.2014):

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, 1);
System.out.println(calendar.getTime());
Run Code Online (Sandbox Code Playgroud)

回报

Sun Mar 02 14:52:28 CET 2014
Run Code Online (Sandbox Code Playgroud)

您应该在设置月份之前添加代码:

calendar.set(Calendar.DAY_OF_MONTH, 1);
Run Code Online (Sandbox Code Playgroud)