2013-05-30 10 views
5

Ich versuche, alle 12 Monate in eine String-Liste in Java zu bekommen. Wie kann ich dies mit dem java.util Kalender tun? Ich habe den folgenden Code verwendet, um eine Jahresliste zu erstellen! Jetzt möchte ich eine Monatsliste für die 12 Monate erstellen.Alle Monate auf eine Liste in Java setzen

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(); 
    } 

bitte helfen Sie mir! danke!

+0

Ich kann kein anderes Plugin verwenden! Ich frage nach Java util! –

+0

Ihre Beschreibung und Ihr Code stimmen nicht überein. Was ist das ganze Zeug für das kommende Jahr? [Möchten Sie dies] (http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#getDisplayName%28int,%20int,%20java.util.Locale%29) – BevynQ

Antwort

9

versuchen diese

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

Oder wahrscheinlich [das] (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); 
    } 
} 
} 

Referenz Get Months Example

+1

Was an der Methode getMonths() seltsam ist, ist, dass sie ein Array der Länge 13 zurückgibt, wobei das letzte Element leer ist. Ist das ein Fehler? – Aquarelle

3

Diese 100-Lösung weniger Zeichen als PSR verwendet. :)

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

Auch ich denke, das ist mehr offensichtlich, aber funktioniert nicht, wenn Sie Locales oder andere seltsame Dinge wollen.

4

Calendar.getDisplayNames(int field, int style, Locale locale) gibt Ihnen eine Map Monatsnamen und ihre entsprechenden ganzzahligen Werte.

beispiels folgenden -

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

sollte etwas wie folgt anzeigen -

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

Sie die Karte verwenden können, um die Liste zu bilden, wie Sie möchten.

Hinweis: Dies ist nur für den Fall, dass Sie etwas aus java.util verwenden sollten, obwohl ich die von @PSR vorgestellt lieber, die am einfachsten zu sein scheint (und unterstützt auch Locale).

Verwandte Themen