No creo que haya una manera fácil de hacer esto con Moment.js.
Sin embargo, con Luxon (sucesor de Moment.js) puede crear un intervalo, convertirlo en una duración y luego formatear los valores. Por ejemplo, para obtener los años, meses y días desde la época de ECMAScript hasta ahora:
// Create an interval from 1 Jan 1970 UTC to now let interval = luxon.Interval.fromDateTimes( new Date(0), // 1 Jan 1970 UTC new Date() // now ); // Show default interval object console.log(interval.toFormat('yyyy-MM-dd')); // Convert to duration object let d = interval.toDuration(['years','months','days']).toObject(); // Display in friendly format let text = []; d.years? text.push(d.years + ' years') : null; d.months? text.push(d.months + ' months') : null; d.days? text.push(d.days.toFixed(1) + ' days') : null; console.log(text.join(', ')); <script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/2.3.0/luxon.min.js"></script>Tenga en cuenta que también hay:
Quieres decir, como moment.fromNow()
[A veces, vale la pena leer la documentación ]
Si eso no funciona para ti, entonces algo como
puede que.
Pero...
Considere migrar a Luxon : Moment.js está obsoleto. Luxon es más pequeño, más elegante. Más concretamente, tiene una Duration que tiene un método toFormat() que le dará exactamente lo que está buscando.