在Java中打印当月的6个月名称

时间:2016-04-18 11:53:41

标签: java java-8

我需要打印当月的过去6个月的名字。

例如,2016年4月开始运营时,我需要打印:nov(2015),dec(2015),jan(2016),feb(2016),march(2016),4月(2016)

Format formatter = new SimpleDateFormat("MMMM YYYY");
Calendar c = Calendar.getInstance();

String[] thisAndLastFiveMonths = new String[6];
for (int i = 0; i < thisAndLastFiveMonths.length; i++) {
    thisAndLastFiveMonths[i] = formatter.format(c.getTime());
    c.add(Calendar.MONTH, -1);
    System.out.println(c);

1 个答案:

答案 0 :(得分:6)

使用Java Time API,您可以构建代表当前年月的YearMonth对象,并致电minusMonths以减去数月。

然后,您可以使用Month.getDisplayName(style, locale)获取月份名称的文字表示。给定的TextStyle用于设置输出样式;您可以在案件中使用SHORT

  

简短文字,通常是缩写。例如,星期一星期一可能会输出“星期一”。

public static void main(String[] args) {
    for (int i = 5; i >= 0; i--) {
        YearMonth date = YearMonth.now().minusMonths(i);
        String monthName = date.getMonth().getDisplayName(TextStyle.SHORT, Locale.ENGLISH);
        System.out.println(monthName + "(" + date.getYear() + ")");
    }
}

在2016年4月投放时打印:

Nov(2015)
Dec(2015)
Jan(2016)
Feb(2016)
Mar(2016)
Apr(2016)