Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2020, 17:58
Новичок на форуме
Отправить личное сообщение для difit37033@pastortips.com Посмотреть профиль Найти все сообщения от difit37033@pastortips.com
 
Регистрация: 09.10.2020
Сообщений: 1

часы на js цикл
добрый день делаю расписаний часов и никак не могу сделать


const getTableHours = (from, to) => {

  const sceduler = [];
  for(let i = from; i < to; i++) {
    for(let j = 0; j < 60/rangeDelay; j++) {
      // sceduler.push( i + ":" + (j*rangeDelay < 9 ? "" + j*rangeDelay: j*rangeDelay) + "-" + i + ":" + ((j> 3 ? '60' : j+1 )*(rangeDelay)));
  sceduler.push( i + ":" + (j*rangeDelay < 9 ? "" + j*rangeDelay: j*rangeDelay) + "-" + i + ":" + ((j+1)*(rangeDelay)));
    }
  }
  return sceduler;
}


0: "08:0-08:15"
1: "08:15-08:30"
2: "08:30-08:45"
3: "08:45-08:60"
4: "9:0-9:15"
5: "9:15-9:30"
6: "9:30-9:45"
7: "9:45-9:60"
8: "10:0-10:15"
9: "10:15-10:30"
10: "10:30-10:45"
11: "10:45-10:60"
12: "11:0-11:15"
13: "11:15-11:30"
14: "11:30-11:45"
15: "11:45-11:60"
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2020, 18:30
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Набросал на коленке, есть что улучшить.
/**
 * @param {Date} start
 * @param {Date} finish
 * @param {int} activityDurationInSeconds
 * @param {int} [breakInSeconds]
 * @return {array}
 */
function makeSchedule(start, finish, activityDurationInSeconds, breakInSeconds = 0) {
    [start, finish] = [start, finish].map(val => +val).sort((a, b) => a - b);
    
    const formatter = dateTime => {
        return [
            dateTime.getHours(),
            dateTime.getMinutes(),
        ].map(val => val > 9 ? val : '0' + val).join(':');
    }
    
    const result = [];
    const setDate = (date => milliseconds => {
        date.setTime(milliseconds);
        
        return date;
    })(new Date());
    
    let time = start;
    while (time < finish) {
        result.push([
            formatter( setDate(time) ),
            formatter( setDate(time += activityDurationInSeconds * 1000) )
        ]);
        
        time += breakInSeconds * 1000;
    }
    
    return result;
}

console.table(
    makeSchedule(
        new Date().setHours(08, 00), 
        new Date().setHours(16, 00), 
        15 * 60, // convert minutes to seconds
        0
    )
);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу JS разработчиков в лесу Kenjuy27 Работа 0 18.07.2018 09:06
Диалог между HTML и внешним JS в контексте расширения GoogleChrome ev1lart Events/DOM/Window 0 26.04.2017 19:25
BackEnd/FrontEnd Developer (Native JS) Abab Работа 0 25.12.2016 10:56
js стиль render для react.js vflash Ваши сайты и скрипты 5 01.04.2016 22:57
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28