Вы можете преобразовать все элементы в наименьшую единицу (минуты в вашем случае), а затем разделить на год, выраженный в той же единице:
const calculateTime = [{title: 'a',days: 9,hours: 22,minutes: 32,},{title: 'b',days: 3,hours: 14,minutes: 0,},{title: 'c',days: 6,hours: 8,minutes: 0,}];
for (let {title, days, hours, minutes} of calculateTime) {
let fraction = ((days*24 + hours)*60 + minutes) / (365*24*60);
console.log(title, (fraction * 100).toFixed(2)+"%");
}
Несколько замечаний:
- Год может иметь високосный день.Это не входит в это решение, поскольку фактический год не указан.
- Переход на летнее время (DST) может составлять один день, имеющий только 23 часа, и еще 25. Кроме того, это не учитывается, так какХарактеристики DST зависят от области.