2012-12-23 231 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