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
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);
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
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);
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)?
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
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);
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);
}