Este team de especialistas despúes de algunos días de trabajo y de recopilar de información, encontramos la solución, deseamos que resulte de gran utilidad para tu proyecto.
Solución:
Puede obtener la diferencia en años y agregarla a la fecha inicial; luego obtenga la diferencia en meses y agréguela nuevamente a la fecha inicial.
Al hacerlo, ahora puede obtener fácilmente la diferencia en días y evitar usar también el operador de módulo.
ejemplo aquí
var a = moment([2015, 11, 29]);
var b = moment([2007, 06, 27]);
var years = a.diff(b, 'year');
b.add(years, 'years');
var months = a.diff(b, 'months');
b.add(months, 'months');
var days = a.diff(b, 'days');
console.log(years + ' years ' + months + ' months ' + days + ' days');
// 8 years 5 months 2 days
No conozco una mejor manera integrada de lograr esto, pero este método parece funcionar bien.
Moment.js también tiene duration
objeto. Un momento se define como un punto único en el tiempo, mientras que la duración se define como un período de tiempo que es básicamente lo que desea.
var a = moment([2015, 11, 29]);
var b = moment([2007, 06, 27]);
var diffDuration = moment.duration(a.diff(b));
console.log(diffDuration.years()); // 8 years
console.log(diffDuration.months()); // 5 months
console.log(diffDuration.days()); // 2 days
Lo que sugiere @Josh puede funcionar, pero definitivamente no es la forma correcta de calcular la diferencia en 2 momentos.
No se te olvide compartir este enunciado si te fue de ayuda.