2013-05-30 18 views
5

Próbuję uzyskać wszystkie 12 miesięcy na listę ciągów w java. Jak mogę to zrobić za pomocą kalendarza java.util. Użyłem tego kodu do zbudowania listy lat! teraz chcę stworzyć listę miesięcy na 12 miesięcy.Ustaw wszystkie miesiące na listę w 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(); 
    } 

Proszę, pomóż mi! dziękuję!

+0

Nie mogę użyć innej wtyczki! Pytam o wykorzystanie java! –

+0

Twój opis i kod nie pasują do siebie. Co to wszystko w przyszłym roku? [chcesz tego] (http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#getDisplayName%28int,%20int,%20java.util.Locale%29) – BevynQ

Odpowiedz

9

spróbować

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

Lub prawdopodobnie [to] (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); 
    } 
} 
} 

referencyjny Get Months Example

+1

Dziwne w metodzie getMonths() jest to, że zwraca tablicę o długości 13, z ostatnim elementem pustym. Czy to błąd? – Aquarelle

3

ten wykorzystuje 100 mniej znaków niż PSR za rozwiązanie. :)

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

Sądzę, że jest to bardziej oczywiste, ale nie działa, jeśli chcesz ustawić lokalizację lub inne dziwne rzeczy.

4

Calendar.getDisplayNames(int field, int style, Locale locale) podaje Map nazw miesięcy i odpowiadających im wartości całkowitych.

np następujący -

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

powinno wyświetlić coś w następujący sposób -

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

Możesz korzystać z mapy, aby utworzyć listę, jak chcesz.

Uwaga: Jest tak na wszelki wypadek, jeśli powinieneś użyć czegoś z java.util, chociaż bardziej mi się podoba ten prezentowany przez @PSR, który wydaje się być najprostszy do przodu (a także obsługuje ustawienia regionalne).

Powiązane problemy