2012-12-23 188 views
1

我试图通过将月份int传递给一个函数来获得一个简短的月份名称。 但它始终返回“一月”短月份名称

下面是函数:

public static String getMonthName_Abbr(int month) { 
    Calendar cal = Calendar.getInstance(); 
    cal.set(Calendar.MONTH, month); 
    SimpleDateFormat month_date = new SimpleDateFormat("MMM"); 
    String month_name = month_date.format(month); 
    return month_name; 
} 
+0

这里有点奇怪。根据[SimpleDateFormat的文档](http://developer.android.com/reference/java/text/SimpleDateFormat.html),格式化方法需要一个'Date'并且你传递了一个'int'。 –

+0

我不知道。我期待着一些魔法的发生。该代码块是我试图实现在http://stackoverflow.com/questions/6192781/how-to-get-month-as-a-string-in-android – DaveSav

+0

给出的答案的最新尝试哦,我看到了,将'cal.getTime()'传递给'format'方法。 –

回答

2

您只需通过cal.getTime()format通话,而不是month本身。

见工作演示在http://ideone.com/kKrGY9

我不知道为什么你的代码工作给出,看到如何format期望一个Date,而不是一个int;然而,如果它以某种方式做了,也许作为一个小整数的month的值被解释为围绕该时期(1970年1月1日)的时间。只是一个想法,但无论如何,你的功能将与这一小改变一起工作。

+0

是的,第一个31 * 24 * 60 * 60 * 1000毫秒将是一月份的时间戳,并且他将值从0传递到11。所以直接进入1970年1月1日的第一秒。滑稽的错误,真的:D – Davor