需要在9月到8月的列表中存储月份名称

时间:2018-08-23 03:55:41

标签: java

我想将月份名称存储在列表中,即从9月至8月,我在这里找到了一个代码,用于在列表中存储月份名称,但没有从9月至8月获取如何存储它的方法。我尝试将最后一个元素移到在GeeksForGeeks Algorithm link上找到的给定链接列表算法的前面,但该操作无法按我的意愿进行。

我正在使用的代码:

    private void monthList () {
        List<String> listOfMonth = new LinkedList<>();
        String[] months = new DateFormatSymbols().getShortMonths();
        for (int i = 0; i < months.length; i++) {
            String month = months[i];
            //System.out.println("month = " + month);
            listOfMonth .add(months[i]);
            LinkedList list  = new LinkedList();

        }
        System.out.println(listOfMonth);
    }

致谢

4 个答案:

答案 0 :(得分:2)

要获取一年中的月份,请使用Java 8+,将其偏移8个月:

List<String> listOfMonth = new ArrayList<>();
for (int m = 0; m < 12; m++)
    listOfMonth.add(Month.of((m + 8) % 12 + 1).getDisplayName(TextStyle.FULL, Locale.US));
System.out.println(listOfMonth);

输出

[September, October, November, December, January, February, March, April, May, June, July, August]

进口

import java.time.Month;
import java.time.format.TextStyle;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

答案 1 :(得分:1)

假设我了解您的问题,您很接近。创建偏移量数组,然后使用该数组来计算您要从months获得的条目。而且您不需要内部LinkedList。喜欢,

List<String> listOfMonth = new LinkedList<>();
int[] offset = { 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8 };
String[] months = new DateFormatSymbols().getShortMonths();
for (int i = 0; i < offset.length; i++) {
    listOfMonth.add(months[offset[i] - 1]);
}
System.out.println(listOfMonth);

输出

[Sep, Oct, Nov, Dec, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug]

答案 2 :(得分:1)

对于稍微不同的方法,您可以简单地使用日期/时间API和DateTimeFormatter,例如...

DateTimeFormatter format = DateTimeFormatter.ofPattern("MMMM", Locale.UK);
LocalDate ld = LocalDate.of(2018, Month.SEPTEMBER, 1);
LocalDate endDate = ld.plusYears(1);
List<String> months = new LinkedList<>();
while (ld.isBefore(endDate)) {
    months.add(ld.format(format));
    ld = ld.plusMonths(1);
}

哪个生成包含...的列表

September
October
November
December
January
February
March
April
May
June
July
August

答案 3 :(得分:0)

这可能看起来像这样。

List<String> listOfMonth = new LinkedList<>();
String[] months = new DateFormatSymbols().getShortMonths();
for (int index = 0; index < 12; index++) {
    listOfMonth.add(months[(index + 8) % 12]);
}

在这里,您采用0到12之间的索引。将8添加以从月份名称数组中获取适当的条目号-当索引为0时,您希望数组中的条目号为8,即{{1} },因为数组从0开始编号。

执行Sep部分可确保您只查找0到11之间的索引。