var oldDate = moment('Tue May 20 2008 00:00:00 GMT+0530 (IST)');
var now = new moment();
var years = now.diff(oldDate,'years');
In console am getting only years.But i want years with months like(7year 9month 7day?any help
var oldDate = moment('Tue May 20 2008 00:00:00 GMT+0530 (IST)');
var now = new moment();
var years = now.diff(oldDate,'years');
In console am getting only years.But i want years with months like(7year 9month 7day?any help
Something like this?
// gets a human formatted date difference string: "X years, Y months, Z days"
function momentDiff(oldDate, newDate) {
var oldDateMoment, newDateMoment, numYears, numMonths, numDays;
oldDateMoment = moment(oldDate);
newDateMoment = moment(newDate);
numYears = newDateMoment.diff(oldDateMoment, 'years');
oldDateMoment = oldDateMoment.add(numYears, 'years');
numMonths = newDateMoment.diff(oldDateMoment, 'months');
oldDateMoment = oldDateMoment.add(numMonths, 'months');
numDays = newDateMoment.diff(oldDateMoment, 'days');
return numYears + " years, " + numMonths + " months, " + numDays + " days.";
}
document.addEventListener('DOMContentLoaded', function() {
var getDiffButton = document.querySelector('#getDiff');
getDiffButton.addEventListener('click', function() {
var oldDate = document.querySelector('#oldDate').value;
var newDate = document.querySelector('#newDate').value;
var answerDiv = document.querySelector('#answer');
// call the function with two dates
answerDiv.innerHTML = momentDiff(oldDate, newDate);
});
});
<script src="http://momentjs.com/downloads/moment.js"></script>
<label for="oldDate">Old Date</label>
<input type="date" id="oldDate" name="oldDate" />
<br/>
<label for="newDate">New Date</label>
<input type="date" id="newDate" name="newDate" />
<br/>
<button id="getDiff">Get Diff</button>
<br/>
<div id="answer"></div>
For my usage, I am require to include the day itself into the calculation thus adding 1 extra day to the end dated
momentDiff(startDate, endDate) {
var years, months, days;
var momentStartDate = moment(startDate)
var momentEndDate = moment(endDate).add(1, 'days')
years = momentEndDate.diff(momentStartDate, 'years');
months = momentEndDate.diff(momentStartDate, 'months') % 12
let tempStartDate = momentStartDate.add(months, 'months')
days = momentEndDate.diff(tempStartDate, 'days') % 365
return years + "|" + months + "|" + days;
}