To subtract hours from a date: Use the getHours() method to get the hours of the specific date. Use the setHours() method to set the hours for the date.
Subtract dates using getTime() method Then, you can use the returned difference value and convert it to months, days, minutes, or seconds depending on the measurement required by your project. And that's how you can subtract dates in JavaScript.
Once you know this:
Date
by calling the constructor with milliseconds since Jan 1, 1970.valueOf()
a Date
is the number of milliseconds since Jan 1, 197060,000
milliseconds in a minute :-]In the code below, a new Date
is created by subtracting the appropriate number of milliseconds from myEndDateTime
:
var MS_PER_MINUTE = 60000;
var myStartDate = new Date(myEndDateTime - durationInMinutes * MS_PER_MINUTE);
You can also use get and set minutes to achieve it:
var endDate = somedate;
var startdate = new Date(endDate);
var durationInMinutes = 20;
startdate.setMinutes(endDate.getMinutes() - durationInMinutes);
Everything is just ticks, no need to memorize methods...
var aMinuteAgo = new Date( Date.now() - 1000 * 60 );
or
var aMinuteLess = new Date( someDate.getTime() - 1000 * 60 );
After working with momentjs, I have to say this is an amazing library you should check out. It is true that ticks work in many cases making your code very tiny and you should try to make your code as small as possible for what you need to do. But for anything complicated, use momentjs.
moment.js has some really nice convenience methods to manipulate date objects
The .subtract method, allows you to subtract a certain amount of time units from a date, by providing the amount and a timeunit string.
var now = new Date();
// Sun Jan 22 2017 17:12:18 GMT+0200 ...
var olderDate = moment(now).subtract(3, 'minutes').toDate();
// Sun Jan 22 2017 17:09:18 GMT+0200 ...
Luxon also has an API to manipulate it's own DateTime
object
var dt = DateTime.now();
// "1982-05-25T00:00:00.000Z"
dt.minus({ minutes: 3 });
dt.toISO();
// "1982-05-24T23:57:00.000Z"
This is what I found:
//First, start with a particular time
var date = new Date();
//Add two hours
var dd = date.setHours(date.getHours() + 2);
//Go back 3 days
var dd = date.setDate(date.getDate() - 3);
//One minute ago...
var dd = date.setMinutes(date.getMinutes() - 1);
//Display the date:
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var date = new Date(dd);
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
var displayDate = monthNames[monthIndex] + ' ' + day + ', ' + year;
alert('Date is now: ' + displayDate);
Sources:
http://www.javascriptcookbook.com/article/Perform-date-manipulations-based-on-adding-or-subtracting-time/
https://stackoverflow.com/a/12798270/1873386
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With