Вы не указали тип данных указанной базы данных, поэтому я предполагаю, что это массив, содержащий серию объектов.
dates = [
{
created_at: new Date(2020, 3, 30, 12, 0, 0),
finished_at: new Date(2020, 3, 30, 12, 5, 0)
},
{
created_at: new Date(2020, 3, 30, 12, 7, 0),
finished_at: new Date(2020, 3, 30, 12, 11, 0)
},
{
created_at: new Date(2020, 3, 30, 12, 9, 0),
finished_at: new Date(2020, 3, 30, 12, 15, 0)
}
]
let sum = 0;
// let's say the current time is 12:20
let now = new Date(2020, 3, 30, 12, 20, 0);
// 1200000 is 20 minutes converted to milliseconds
let free_minutes = dates.map(date => (now - date.created_at < 1200000 && now - date.finished_at < 1200000)? (date.finished_at - date.created_at)/1000/60 : 0)
let total_free_minutes = free_minutes.reduce((a, b) => a+b);
console.log(free_minutes, total_free_minutes + ' free minutes last 20 mins')
Эти выходные данные возвращают 10, поскольку в последние 20 минут до 12: 20 было свободное время. 20.
Хотя я использовал функции map
и reduce
, вы Возможно, вы захотите использовать для l oop, если вы хотите повысить читабельность. Ура! :)