web-dev-qa-db-fra.com

Comment obtenir le mois et les années précédents en java?

Comment connaître le dernier mois et son année en Java 

par exemple. Si aujourd'hui est le 10 octobre 2012, le résultat devrait être Mois = 9 et l'année = 2012, Si aujourd'hui est le 10 janvier 2013, le résultat devrait être Mois = 12 et l'année = 2012

24
ashishjmeshram

Votre solution est ici mais au lieu d’addition, vous devez utiliser la soustraction

c.add(Calendar.MONTH, -1);

Ensuite, vous pouvez appeler getter sur la Calendar pour obtenir les champs appropriés

int month = c.get(Calendar.MONTH) + 1; // beware of month indexing from zero
int year  = c.get(Calendar.YEAR);
49
Gaim

Java.time

Utilisation du framework Java.time intégré à Java 8:

import Java.time.LocalDate;

LocalDate now = LocalDate.now(); // 2015-11-24
LocalDate earlier = now.minusMonths(1); // 2015-10-24

earlier.getMonth(); // Java.time.Month = OCTOBER
earlier.getMonth.getValue(); // 10
earlier.getYear(); // 2015
12
Przemek

Utilisez Joda Time Library . Il est très facile de gérer la date, l’heure, le calendrier et les paramètres régionaux et sera intégré à Java dans la version 8.

La méthode DateTime#minusMonths vous aiderait à obtenir le mois précédent.

DateTime month = new DateTime().minusMonths (1); 
10

L'approche la plus simple et la moins sujette aux erreurs est ... Utilisez la méthode roll () de Calendar. Comme ça:

    c.roll(Calendar.MONTH, false);

la méthode du rouleau prend un booléen, ce qui signifie essentiellement rouler le mois en haut (vrai) ou en bas (faux)?

8

vous pouvez utiliser la classe Calendar pour le faire:

SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
System.out.println(format.format(cal.getTime()));

Ceci imprime: 2012.09.10 11:01 pour la date actuelle 2012.10.10 11:01

8
MaVRoSCy

Vous devez savoir que le mois est basé sur zéro et que lorsque vous effectuez le getMonth, vous devrez ajouter 1. Dans l'exemple ci-dessous, nous devons ajouter 1 à Januay comme 1 et non 0 

    Calendar c = Calendar.getInstance();
    c.set(2011, 2, 1);
    c.add(Calendar.MONTH, -1);
    int month = c.get(Calendar.MONTH) + 1;
    assertEquals(1, month);
2
RNJ
private static String getPreviousMonthDate(Date date){
    final SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");

    Calendar cal = Calendar.getInstance();  
    cal.setTime(date);  
    cal.set(Calendar.DAY_OF_MONTH, 1);  
    cal.add(Calendar.DATE, -1);

    Date preMonthDate = cal.getTime();  
    return format.format(preMonthDate);
}


private static String getPreToPreMonthDate(Date date){
    final SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");

    Calendar cal = Calendar.getInstance();  
    cal.setTime(date);  
    cal.add(Calendar.MONTH, -1);  
    cal.set(Calendar.DAY_OF_MONTH,1);  
    cal.add(Calendar.DATE, -1);  

    Date preToPreMonthDate = cal.getTime();  
    return format.format(preToPreMonthDate);
}
0
prasad kamble