How to reduce one month from current date and stored in date variable using java?
Solution 1
Use Calendar:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
Solution 2
Starting from Java 8, the suggested way is to use the Date-Time API rather than Calendar
.
If you want a Date
object to be returned:
Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());
If you don't need exactly a Date
object, you can use the classes directly, provided by the package, even to get dates in other time-zones:
ZonedDateTime dateInUTC = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")).minusMonths(1);
Solution 3
Calendar calNow = Calendar.getInstance()
// adding -1 month
calNow.add(Calendar.MONTH, -1);
// fetching updated time
Date dateBeforeAMonth = calNow.getTime();
Solution 4
you can use Calendar
java.util.Date da = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(da);
cal.add(Calendar.MONTH, -1);
da = cal.getTime();
Solution 5
Using new java.time package in Java8 and Java9
import java.time.LocalDate;
LocalDate mydate = LocalDate.now(); // Or whatever you want
mydate = mydate.minusMonths(1);
The advantage to using this method is that you avoid all the issues about varying month lengths and have more flexibility in adjusting dates and ranges. The Local part also is Timezone smart so it's easy to convert between them.
As an aside, using java.time you can also get the day of the week, day of the month, all days up to the last of the month, all days up to a certain day of the week, etc.
mydate.plusMonths(1);
mydate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).getDayOfMonth();
mydate.with(TemporalAdjusters.lastDayOfMonth());
Comments
-
karthi over 4 years
How to reduce one month from current date and want to sore in
java.util.Date
variable im using this code but it's shows error in 2nd linejava.util.Date da = new Date(); da.add(Calendar.MONTH, -1); //error
How to store this date in
java.util.Date
variable? -
MadProgrammer about 11 years(I assume the use of
setTime
is for demonstration purposes asCalendar.getInstance
will return aCalendar
set to the current date/time...you also might like to put inda = cal.getTime()
just so that you end up with aDate
value at the end...) -
Basil Bourque over 7 yearsI suggest changing this Answer to show a particular time zone, such as
ZoneId.of( "Pacific/Auckland" )
rather thanZoneOffset.UTC
. If someone really wanted UTC, then more appropriate to useOffsetDateTime
thanZonedDateTime
. -
Rez over 6 yearsdeprecated method.
-
Ole V.V. about 6 yearsVery good answer, thanks. There’s no need for the complications contained in many of the other answers.
-
Ole V.V. over 4 yearsPlease don’t teach the young ones to use the long outdated and notoriously troublesome
SimpleDateFormat
class. At least not as the first option. And not without any reservation. Today we have so much better injava.time
, the modern Java date and time API, and itsDateTimeFormatter
. -
Basil Bourque over 2 yearsThe Joda-Time project is now in maintenance-mode. Its successor is built into Java 8 and late, the java.time classes defined by JSR 310. See modern solution in Answer by Gregory Alan Bolcer.