5

我正在尝试将所有 12 个月都放入 java 中的字符串列表中。如何使用 java.util 日历执行此操作。我已经使用以下代码来构建年度列表!现在我想要的是为 12 个月建立一个月份列表。

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

请帮我!谢谢你!

4

4 回答 4

16

试试这个

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

日期格式符号

于 2013-05-30T04:55:33.620 回答
7

这比 PSR 的解决方案少了 100 个字符。:)

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

此外,我认为这更明显,但如果你想要语言环境或其他奇怪的东西,它就不起作用。

于 2013-05-30T05:02:25.137 回答
4

Calendar.getDisplayNames(int field, int style, Locale locale)为您提供Map月份名称及其相应的整数值。

例如以下 -

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提供​​的那个,这似乎是最直接的(并且还支持语言环境)。

于 2013-05-30T05:21:43.303 回答
1
     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);
    }
}
}

参考获取月份示例

于 2013-05-30T05:02:22.947 回答