web-dev-qa-db-fra.com

Comment réduire un mois à partir de la date du jour et stocké dans variable de date en utilisant Java?

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?

48
karthi

Utiliser le calendrier:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
89

À 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);
13
DVarga
Calendar calNow = Calendar.getInstance()

// adding -1 month
calNow.add(Calendar.MONTH, -1);

// fetching updated time
Date dateBeforeAMonth = calNow.getTime();
8
Jigar Joshi

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();
5
Ahiel

Utiliser JodaTime :

Date date = new DateTime().minusMonths(1).toDate();

JodaTime fournit une API pratique pour la manipulation des dates.

Notez qu'une API de date similaire sera introduite dans JDK8 avec le JSR31 .

5
Fredszaq

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());
2