查找一年中的剩余月份

时间:2017-10-07 09:52:18

标签: java date

我正试图找到一种方法来获得一年array个月(例如:2017

  1. 该阵列仅为一年中的剩余月份
  2. 这是可能的,实现这个目标的最佳途径是什么?
  3. 我搜索的答案找不到它
  4. 例如:{ “October”, “November”, “December”}

    到目前为止我做了什么:我能够获得当前年份

    Date now = new Date();    
    int year = now.getYear(); 
    

4 个答案:

答案 0 :(得分:2)

您应该更好地使用新的API LocalDate而不是Date,它更容易使用

  • 首先,您需要获取当前的date 此处07/10/201
  • 你需要找到很多个月,直到今年年底 这里它<2>
  • 然后您创建array size + 1(当前月份为+1) 此处尺寸为3
  • 然后您将array填入您拥有的日期+ i个月
LocalDate date = LocalDate.now();
int nbMonthRemain = 12 - date.getMonth().getValue();

String[] monthsRemaining = new String[nbMonthRemain + 1];
for (int i = 0; i < monthsRemaining.length; i++) {
    monthsRemaining[i] = date.plusMonths(i).getMonth().toString();
}

System.out.println(Arrays.toString(monthsRemaining)); // [OCTOBER, NOVEMBER, DECEMBER]

提示:

.toString()替换为

  • .getDisplayName(TextStyle.FULL, Locale.ENGLISH);获取[October, November, December]
  • .getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);获取[10, 11, 12]
  • .getDisplayName(TextStyle.SHORT, Locale.ENGLISH);获取[Oct, Nov, Dec]
  • ...

答案 1 :(得分:0)

使用GregorianCalendar.getInstance().get(Calendar.MONTH)获取当前月份数(对于oct,您将得到9)

答案 2 :(得分:0)

 i believe something like below code could help      

import java.text.DateFormatSymbols;
import java.util.List;
import java.util.ArrayList; 
public List GetLeftMonth(Integer Mon_num){
 List<String> monthsList = new ArrayList<String>();
        String[] months = new DateFormatSymbols().getMonths();
        for (int i = Mon_num; i < months.length; i++) {
          String month = months[i];
          System.out.println("month = " + month);
          monthsList .add(months[i]);
                }
    return monthsList;
    }

答案 3 :(得分:0)

public static void main(String[] args) {
  LocalDate now = LocalDate.now();
  int currentMonth = now.getMonthValue();
  int monthsInAYear = 12;

  int monthsRemaining = monthsInAYear - currentMonth;
  System.out.println(monthsRemaining); // 2

  for (int i = currentMonth; i <= monthsInAYear; i++) {
    System.out.println(getMonthName(i)); // OCTOBER NOVEMBER DECEMBER
  }
}

private static Month getMonthName(int monthValue) {
  return Month.of(monthValue);
}

不要忘记导入import java.time.LocalDate; import java.time.Month;

正如已经说过的那样,不要使用java.util.Date而是使用java.time.LocalDate,因为它(可以说)更容易使用。