Moment, похоже, не поддерживает то, что вы запрашиваете из коробки, но вы можете получить значения различных единиц времени (годы, месяцы, дни ...) вашей продолжительности, используя функцию get .
Основываясь на этой информации, я собрал пару функций, которые генерируют результат, который вы ищете:
let duration = moment.duration(122101000);
let units = [
{unit: "years", singular: "Year", plural: "Years"},
{unit: "months", singular: "Month", plural: "Months"},
{unit: "days", singular: "Day", plural: "Days"},
{unit: "hours", singular: "Hour", plural: "Hours"},
{unit: "minutes", singular: "Minute", plural: "Minutes"},
{unit: "seconds", singular: "Second", plural: "Seconds"}
];
console.log(output(deconstruct(duration, units)));
function output(entries)
{
let result = "";
for (let i = 0; i < entries.length; i++) {
let entry = entries[i];
if (i > 0) {
result += ', ' + (i == entries.length - 1 ? "and " : "");
}
result += entry.unitValue + " " + (entry.unitValue == 1 ? entry.unit.singular : entry.unit.plural);
}
return result;
}
function deconstruct(duration, units)
{
let values = [], unitValue;
for (let unit of units) {
if (unitValue = duration.get(unit.unit)) {
values.push({"unitValue": unitValue, "unit": unit})
}
}
return values;
}
<script src="https://cdn.jsdelivr.net/momentjs/2.14.1/moment-with-locales.min.js"></script>