How to reduce one month from current date and stored in date variable using java?

97,959

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());
Share:
97,959
karthi
Author by

karthi

i am a student...

Updated on January 12, 2020

Comments

  • karthi
    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 line

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

    How to store this date in java.util.Date variable?

  • MadProgrammer
    MadProgrammer about 11 years
    (I assume the use of setTime is for demonstration purposes as Calendar.getInstance will return a Calendar set to the current date/time...you also might like to put in da = cal.getTime() just so that you end up with a Date value at the end...)
  • Basil Bourque
    Basil Bourque over 7 years
    I suggest changing this Answer to show a particular time zone, such as ZoneId.of( "Pacific/Auckland" ) rather than ZoneOffset.UTC. If someone really wanted UTC, then more appropriate to use OffsetDateTime than ZonedDateTime.
  • Rez
    Rez over 6 years
    deprecated method.
  • Ole V.V.
    Ole V.V. about 6 years
    Very good answer, thanks. There’s no need for the complications contained in many of the other answers.
  • Ole V.V.
    Ole V.V. over 4 years
    Please 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 in java.time, the modern Java date and time API, and its DateTimeFormatter.
  • Basil Bourque
    Basil Bourque over 2 years
    The 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.