Imprimer les noms des 6 derniers mois à partir du mois en cours en Java


J'ai besoin d'imprimer le nom des 6 derniers mois du mois en cours.

Par exemple, lorsqu'il est exécuté en avril 2016, j'ai besoin d'imprimer: novembre(2015), dec(2015), jan(2016), février(2016), mars(2016), avril(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);
Author: Tunaki, 2016-04-18

1 answers

En utilisant Java Time API , vous pouvez construire un YearMonth objet représentant l'année-mois en cours et l'appel minusMonths soustraire un nombre de mois.

Ensuite, vous pouvez obtenir la représentation textuelle des noms de mois avec Month.getDisplayName(style, locale). Le TextStyle est utilisé pour le style de la sortie; vous pouvez utiliser SHORT pour votre cas:

Texte Court, généralement une abréviation. Par exemple, le lundi du jour de la semaine peut produire "Mon".

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

Imprime, lorsqu'il est exécuté en avril 2016:

Nov(2015)
Dec(2015)
Jan(2016)
Feb(2016)
Mar(2016)
Apr(2016)
 6
Author: Tunaki, 2016-04-18 12:01:06