Как рассчитать свободное доступное время из вывода json?

#javascript

#javascript

Вопрос:

У меня есть такой json со свойствами времени начала и окончания в объектах.

 var meetings = [
  {
    id: '1',
    start_time: "2020-11-15T08:30:00 00:00",
    end_time: "2020-11-15T14:15:00 00:00"
  },
  {
    id: '2',
    start_time: "2020-11-15T19:30:00 00:00",
    end_time: "2020-11-15T20:30:00 00:00"
  },
];
  

Итак, две встречи первая: 08:30 — 14:15 вторая: 19:30-20:30

Для работы доступно 24 часа, поэтому:

 start_time = '00:00:00';
end_time = '23:59:00';
  

но в формате, который мне нужен, будет

 var start_time = '2020-11-15T00:00:00 00:00';
var end_time = '2020-11-15T23:59:00 00:00';
  

Как я могу рассчитать доступные часы в зависимости от уже проведенных встреч?
Итак, поскольку первая встреча с 08:30 до 14:15, а вторая с 19:30-20:30, мне понадобится json со следующим результатом с доступными часами:

 
[
  {
    start_time:'2020-11-15T00:00:00 00:00',
    end_time:'2020-11-15T08:30:00 00:00'
  },

  {
    start_time:'2020-11-15T14:15:00 00:00',
    end_time:'2020-11-15T19:30:00 00:00'
  },

  {
    start_time:'2020-11-15T20:30:00 00:00',
    end_time:'2020-11-15T23:59:00 00:00'
  }
]
  

Ответ №1:

Вы можете сделать что-то вроде этого:

 var meetings = [
  {
    id: '1',
    start_time: "2020-11-15T08:30:00 00:00",
    end_time: "2020-11-15T14:15:00 00:00"
  },
  {
    id: '2',
    start_time: "2020-11-15T19:30:00 00:00",
    end_time: "2020-11-15T20:30:00 00:00"
  },
  {
    id: '3',
    start_time: "2020-11-15T20:50:00 00:00",
    end_time: "2020-11-15T21:30:00 00:00"
  },
  {
    id: '4',
    start_time: "2020-11-15T22:30:00 00:00",
    end_time: "2020-11-15T22:40:00 00:00"
  },

];

var startTime = '2020-11-15T00:00:00 00:00';
var endTime = '2020-11-15T23:59:00 00:00';



let availableHours = [];

for(let index in meetings){
    if(index != meetings.length - 1){
        index == 0 ? availableHours.push({start_time: startTime, end_time: meetings[index]['start_time'] }) : 0;
        availableHours.push({start_time: meetings[index].end_time, end_time: meetings[ index   1]['start_time'] });
    } else {
        availableHours.push({start_time: meetings[index].end_time, end_time: endTime })
    }    
}

console.log(meetings)
console.log(availableHours)  

Комментарии:

1. СПАСИБО за ваш ответ. Но часы с 14:15 до 19:30 не включены. Не могли бы вы также предоставить новый пример кода в этом случае для всех часов

2. код обновлен, все готово. удачи с вашим проектом!