If i have a variable that returns a date, in the format of dd MMM yyyy, so 28 Aug 2014, how can i get the date of the previous month.
I can modify the month via:
$scope.DateMapping = function (months) {
var myVariable = "28 Aug 2014"
var makeDate = new Date(myVariable);
prev = new Date(makeDate.getFullYear(), makeDate.getMonth()+1, 1);
});
Essentially, this is adding one to the Month.. But how can i account for years, so if the current date is 12 Dec 2014, the previous would be 12 Jan 2013?
My application is using AngularJS can make use of filters.
UPDATE:
var myVariable = "28 Aug 2014"
var makeDate = new Date(myVariable);
var prev = new Date(makeDate.getFullYear(), makeDate.getMonth()+1, makeDate.getMonth());
console.log(myVariable)
console.log(makeDate)
console.log(prev)
Output:
28 Aug 2014
Thu Aug 28 2014 00:00:00 GMT+0100 (GMT Standard Time)
Mon Sep 01 2014 00:00:00 GMT+0100 (GMT Standard Time)
How comes although the month has incremented, the day is showing as 01 instead of 28?
var myVariable = "28 Aug 2014"
var makeDate = new Date(myVariable);
makeDate = new Date(makeDate.setMonth(makeDate.getMonth() - 1));
Update:
A shorter version:
var myVariable = "28 Aug 2014"
var makeDate = new Date(myVariable);
console.log('Original date: ', makeDate.toString());
makeDate.setMonth(makeDate.getMonth() - 1);
console.log('After subtracting a month: ', makeDate.toString());
If you don't want to deal with corner cases just use moment.js. Native JavaScript API for Date is bad.