How to Subtract X Day from a Date Object in Java

How to subtract X day from a Date object in Java?

Java 8 and later

With Java 8's date time API change, Use LocalDate

LocalDate date = LocalDate.now().minusDays(300);

Similarly you can have

LocalDate date = someLocalDateInstance.minusDays(300);

Refer to https://stackoverflow.com/a/23885950/260990 for translation between java.util.Date <--> java.time.LocalDateTime

Date in = new Date();
LocalDateTime ldt = LocalDateTime.ofInstant(in.toInstant(), ZoneId.systemDefault());
Date out = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());

Java 7 and earlier

Use Calendar's add() method

Calendar cal = Calendar.getInstance();
cal.setTime(dateInstance);
cal.add(Calendar.DATE, -30);
Date dateBefore30Days = cal.getTime();

How to subtract X days from a date using Java calendar?

Taken from the docs here:

Adds or subtracts the specified amount of time to the given calendar field, based on the calendar's rules. For example, to subtract 5 days from the current time of the calendar, you can achieve it by calling:

Calendar calendar = Calendar.getInstance(); // this would default to now
calendar.add(Calendar.DAY_OF_MONTH, -5).

How to subtract X days from a given string field storing Date in java?

Date is being phased out, there are new classes you could use if you are OK with that (ie it is not compulsory to use Date). For example:

        String extractDate = "2020-11-13";
LocalDate date = LocalDate.parse(extractDate);
LocalDate newDate = date.minusDays(30);
System.out.println(newDate);

How to subtract n days from current date in java?

You don't have to use Calendar. You can just play with timestamps :

Date d = initDate();//intialize your date to any date 
Date dateBefore = new Date(d.getTime() - n * 24 * 3600 * 1000 l ); //Subtract n days

UPDATE
DO NOT FORGET TO ADD "l" for long by the end of 1000.

Please consider the below WARNING:

Adding 1000*60*60*24 milliseconds to a java date will once in a great while add zero days or two days to the original date in the circumstances of leap seconds, daylight savings time and the like. If you need to be 100% certain only one day is added, this solution is not the one to use.

Unable subtract days from date in java

Use java.util.Calendar.
Something like that:

Calendar c = new Calendar()
c.setTime(currentDate);
c.add(Calendar.DAY_OF_MONTH, noOfDays)
compareDate = c.getTime()

How to subtract days from a plain Date?

Try something like this:

 var d = new Date();
d.setDate(d.getDate()-5);

Note that this modifies the date object and returns the time value of the updated date.

var d = new Date();
document.write('Today is: ' + d.toLocaleString());
d.setDate(d.getDate() - 5);
document.write('<br>5 days ago was: ' + d.toLocaleString());

Java: Easiest Way to Subtract Dates

tl;dr

To move from one date to another by adding/subtracting a number of days.

LocalDate.now(
ZoneId.of( "Pacific/Auckland" )
)
.minusDays( 5 )

To calculate the number of days, months, and years elapsed between two dates.

ChronoUnit.DAYS.between( start , stop )

Parsing

First you must parse your string inputs into date-time objects. Then you work on preforming your business logic with those objects.

Stop thinking of date-time values as strings, that will drive you nuts. We work with date-time objects in our code; we exchange data with users or other apps using a String representation of that date-time object.

In Java 8 and later, use the java.time framework. See Tutorial.

You want only a date, without time-of-day, so we can use the LocalDate class.

That funky double-colon syntax is a method reference, a way to say what method should be called by other code.

String input = "2015 01 02";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "yyyy MM dd" );
LocalDate localDate = formatter.parse ( input , LocalDate :: from );

Current date

Determining today’s date requires a time zone. For any given moment, the date varies around the globe by zone.

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalDate todayTunis = LocalDate.now( z ) ;

If you want the JVM’s current default time zone, call ZoneId.systemDefault.

Subtracting Dates

This has been addressed many times before on StackOveflow.com. For example, How to subtract X days from a date using Java calendar?. For details, see other Answers such as this one by me and this one by me for more details. Tip: "elapsed" is a key search word.

Use ChronoUnit.DAYS enum to calculate count of days elapsed.

LocalDate weekLater = localDate.plusDays ( 7 );
long daysElapsed = java.time.temporal.ChronoUnit.DAYS.between( todayTunis , weekLater ) ;

Dump to console.

System.out.println ( "localDate: " + localDate + " to " + weekLater + " in days: " + daysElapsed );

localDate: 2015-01-02 to 2015-01-09 in days: 7



Related Topics



Leave a reply



Submit