Comment réduire un mois à compter de la date du jour et vouloir faire mal à Java.util.Date
variable j’utilise ce code mais montre une erreur en 2ème ligne
Java.util.Date da = new Date();
da.add(Calendar.MONTH, -1); //error
Comment stocker cette date dans Java.util.Date
variable?
Utiliser le calendrier:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
À partir de Java 8, la méthode suggérée consiste à utiliser le API Date-Time plutôt que Calendar
.
Si vous souhaitez qu'un objet Date
soit renvoyé:
Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());
Si vous n'avez pas besoin exactement d'un objet Date
, vous pouvez utiliser les classes directement, fournies par le paquet, même pour obtenir des dates dans d'autres fuseaux horaires:
ZonedDateTime dateInUTC = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")).minusMonths(1);
Calendar calNow = Calendar.getInstance()
// adding -1 month
calNow.add(Calendar.MONTH, -1);
// fetching updated time
Date dateBeforeAMonth = calNow.getTime();
vous pouvez utiliser Calendar
Java.util.Date da = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(da);
cal.add(Calendar.MONTH, -1);
da = cal.getTime();
Utilisation du nouveau package Java.time dans Java8 et Java9
import Java.time.LocalDate;
LocalDate mydate = LocalDate.now(); // Or whatever you want
mydate = mydate.minusMonths(1);
L'avantage d'utiliser cette méthode est que vous évitez tous les problèmes liés à la variation de la longueur des mois et que vous disposez d'une plus grande flexibilité pour ajuster les dates et les plages. La partie locale est également intelligente en fuseau horaire, il est donc facile de convertir entre eux.
En passant, en utilisant Java.time, vous pouvez également obtenir le jour de la semaine, le jour du mois, tous les jours jusqu'à la fin du mois, tous les jours jusqu'à un certain jour de la semaine, etc.
mydate.plusMonths(1);
mydate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).getDayOfMonth();
mydate.with(TemporalAdjusters.lastDayOfMonth());