2013-05-30 10 views
5

Sto cercando di ottenere tutti i 12 mesi in una lista di stringhe in java. Come posso farlo usando il calendario java.util. Ho usato il seguente codice per creare un elenco di anni! ora voglio creare un elenco di mesi per i 12 mesi.imposta tutti i mesi su un elenco in 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(); 
    } 

per favore aiutatemi! grazie!

+0

Non riesco a utilizzare un altro plug-in! Sto chiedendo java util! –

+0

La tua descrizione e il tuo codice non sembrano corrispondere. Cos'è tutto questo roba del futuro? [vuoi questo] (http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#getDisplayName%28int,%20int,%20java.util.Locale%29) – BevynQ

risposta

9

provare questo

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

O probabilmente [questo] (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); 
    } 
} 
} 

Riferimento Get Months Example

+1

Ciò che è strano del metodo getMonths() è che restituisce una matrice di lunghezza 13, con l'ultimo elemento vuoto. è un insetto? – Aquarelle

3

Questo utilizza 100 meno caratteri rispetto alla soluzione del PSR. :)

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

Inoltre penso che questo sia più immediatamente evidente, ma non funziona se si desidera locali o altre cose strane.

4

Calendar.getDisplayNames(int field, int style, Locale locale) fornisce un numero di Map di mesi e i relativi valori interi corrispondenti.

per esempio le seguenti -

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

dovrebbe visualizzare qualcosa come segue -

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

È possibile utilizzare la mappa per formare la lista come ti piace.

Nota: questo è solo nel caso in cui si dovrebbe usare qualcosa da java.util, anche se mi piace quello presentato da @PSR meglio, che sembra essere il più diretto (e supporta anche le impostazioni internazionali).

Problemi correlati