Domanda Come ridurre un mese dalla data corrente e memorizzato nella variabile data usando java?


Come ridurre un mese dalla data corrente e vuoi farmi male java.util.Date variabile Sto usando questo codice ma mostra errore nella seconda riga

 java.util.Date da = new Date();
 da.add(Calendar.MONTH, -1); //error

Come conservare questa data in java.util.Date variabile?


44
2018-05-06 06:08


origine


risposte:


Usa calendario:

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

79
2018-05-06 06:10



A partire da Java 8, il modo suggerito è quello di utilizzare il API Date-Time piuttosto che Calendar.

Se vuoi un Date oggetto da restituire:

Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());

Se non ti serve esattamente a Date oggetto, è possibile utilizzare direttamente le classi, fornite dal pacchetto, anche per ottenere date in altri fusi orari:

ZonedDateTime dateInUTC = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")).minusMonths(1);

9
2017-09-16 11:28



Calendar calNow = Calendar.getInstance()

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

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

8
2018-05-06 06:10



utilizzando JodaTime :

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

JodaTime fornisce una comoda API per la manipolazione delle date.

Si noti che un'API Date simile verrà introdotta in JDK8 con JSR310.


5
2018-05-06 09:52



Puoi usare Calendar

    java.util.Date da = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(da);
    cal.add(Calendar.MONTH, -1);
    da = cal.getTime();

4
2018-05-06 06:12



Utilizzo del nuovo pacchetto java.time in Java8 e Java9

import java.time.LocalDate;

LocalDate mydate = LocalDate.now(); // Or whatever you want
mydate = mydate.minusMonths(1);

Il vantaggio dell'utilizzo di questo metodo è che si evitano tutti i problemi relativi alle lunghezze variabili del mese e si ha maggiore flessibilità nella regolazione delle date e degli intervalli. Anche la parte Locale è Timezone smart, quindi è facile convertirli.

Per inciso, utilizzando java.time puoi anche ottenere il giorno della settimana, il giorno del mese, tutti i giorni fino all'ultimo giorno, tutti i giorni fino a un certo giorno della settimana, ecc.

mydate.plusMonths(1);
mydate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).getDayOfMonth();
mydate.with(TemporalAdjusters.lastDayOfMonth());

2
2018-05-14 22:15