2013-05-30 32 views
5

我試圖在java中獲得所有12個月的字符串列表。我如何使用java.util日曆來做到這一點。 我用下面的代碼來建立年份列表!現在我想要建立12個月的月份列表。將所有月份設置爲java中的列表

protected String getYears(){ 
     int currentYear = Calendar.getInstance().get(Calendar.YEAR); 

     Calendar cal = Calendar.getInstance(); 
     cal.add(Calendar.MONTH, 3); 

     int futureYear = cal.get(Calendar.YEAR); 

     List<String> years = new ArrayList<String>(); 

     for(int i = -2 ; i < 1 ; i++){ 
      if(i != 0){ 
       cal = Calendar.getInstance(); 
       cal.add(Calendar.YEAR,i); 
       years.add(Integer.toString(cal.get(Calendar.YEAR))); 
      }else if(currentYear != futureYear){ 
       years.add(Integer.toString(currentYear)); 
       years.add(Integer.toString(futureYear)); 
      }else if(currentYear == futureYear){ 
       years.add(Integer.toString(currentYear)); 
      } 
     } 


     HTMLOptionBuilder ob = new HTMLOptionBuilder(false); 
     for(int i = 0; i < years.size(); i++){ 
      if(years.get(i).equals(currentYear)){ 
       ob.addOption(years.get(i), years.get(i), true, true); 
      }else{ 
       ob.addOption(years.get(i), years.get(i)); 
      } 
     } 
     return ob.getHTML(); 
    } 

請幫幫我! 謝謝!

+0

我不能使用其他插件!我在問java util! –

+0

您的描述和您的代碼似乎不匹配。未來的一年是什麼? [你想要這個](http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#getDisplayName%28int,%20int,%20java.util.Locale%29) – BevynQ

回答

9

試試這個

import java.text.DateFormatSymbols; 

public class Main { 
    public static void main(String[] args) { 
    List<String> monthsList = new ArrayList<String>(); 
    String[] months = new DateFormatSymbols().getMonths(); 
    for (int i = 0; i < months.length; i++) { 
     String month = months[i]; 
     System.out.println("month = " + month); 
     monthsList .add(months[i]); 
    } 

DateFormatSymbols

+0

或者可能[this](http://www.kodejava.org/examples/63.html)? – NINCOMPOOP

0
 import java.text.DateFormatSymbols; 
    import java.util.Locale; 

public class MonthNames { 
    public static void main(String[] args) { 
    String[] months = new DateFormatSymbols().getMonths(); 
    for (int i = 0; i < months.length; i++) { 
     String month = months[i]; 
     System.out.println("month = " + month); 
    } 

    String[] shortMonths = new DateFormatSymbols().getShortMonths(); 
    for (int i = 0; i < shortMonths.length; i++) { 
     String shortMonth = shortMonths[i]; 
     System.out.println("shortMonth = " + shortMonth); 
    } 

    String[] germanyMonths = new DateFormatSymbols(Locale.GERMANY).getMonths(); 
    for (int i = 0; i < germanyMonths.length; i++) { 
     String germanyMonth = germanyMonths[i]; 
     System.out.println("germanyMonth = " + germanyMonth); 
    } 

    String[] germanyShortMonths = new DateFormatSymbols(Locale.GERMANY).getShortMonths(); 
    for (int i = 0; i < germanyShortMonths.length; i++) { 
     String germanyShortMonth = germanyShortMonths[i]; 
     System.out.println("germanyShortMonth = " + germanyShortMonth); 
    } 
} 
} 

參考Get Months Example

+1

getMonths()方法的奇怪之處在於它返回一個長度爲13的數組,最後一個元素爲空。這是一個錯誤? – Aquarelle

3

它使用100點更少的字符比PSR的解決方案。 :)

List<String> months = Arrays.asList("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 

此外,我認爲這是更明顯,但不工作,如果你想區域設置或其他奇怪的事情。

4

Calendar.getDisplayNames(int field, int style, Locale locale)爲您提供Map月份名稱及其相應的整數值。

e.g以下 -

Calendar cal = Calendar.getInstance(); 
Map<String, Integer> map = cal.getDisplayNames(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH); 
System.out.println(map); 

應該如下顯示的東西 -

{October=9, January=0, April=3, February=1, August=7, June=5, November=10, July=6, May=4, December=11, March=2, September=8} 

您可以使用地圖,只要你喜歡,形成列表。

注意:這是爲了防止您應該使用java.util中的某些東西,儘管我更喜歡@PSR提供的更好,這似乎是最直接的(也支持語言環境)。

相關問題