Javascript l oop до даты / времени с шагом валидации - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь построить таблицу от времени начала до конца дня с определенным шагом.

например: если пользователь выбирает 15-минутное приращение, начиная с 8:10, время идет 8: 10,8: 25,8: 40,8: 55,9: 10 ...

Мой текущий код не исправляет работу, мы перешли на следующий час, а затем снова начали смещение, например, я получаю: 815,830,845,905,935,1025,1125,1225,1325 ...

Вот JSFiddle https://jsfiddle.net/inboxdesign/c8f2dhng/13/

Вот код, который у меня есть;

// from select:
let $first_hour = 8;
let $first_minute = 10;
let day_count = 1;  // don't worry about this;

let duration = 15; // increment

        var offset = 0;
        var current_time = parseInt($first_hour + $first_minute);
        for (var i = 0; i < 120; i++) {
            if (current_time < 2400) {
                var time_string = ('' + current_time);
                var time_minutes = parseInt(time_string.substring(time_string.length - 2));
                if (time_minutes < 60) {
                    // offset = 0;
                    times += '<tr>';
                    for (var d = 1; d <= day_count; d++) {
                        times += '<td>d: ' + d + ' : time: ' + current_time + ' ->' + time_string.substring(time_string.length - 2) + ' offset: ' + offset +'</td>';
                    }
                    times += '</tr>';
                } else {
                    offset = (time_minutes - 60);
                    // times += '<tr>';
                    // times += '<td>o:' + offset + ' tm: ' + time_minutes + '</td>';
                    // time_minutes = offset;
                    // times += '</td>';
                }
            }
            console.log('current_time: ' + current_time);
            current_time = parseInt(current_time + duration + offset);

1 Ответ

1 голос
/ 16 июня 2020

В этой строке ваше смещение else должно быть сброшено на 0

for (var d = 1; d <= SP.new_conference.day_count; d++) {
                        times += '<td>d: ' + d + ' : time: ' + current_time + ' ->' + time_minutes + ' offset: ' + offset +'</td>';
                    }
                //  times += '</tr>';
                } else {
                    offset = 0;

, а затем ваше текущее время и смещение должны выглядеть следующим образом

current_time = parseInt(current_time + SP.new_conference.duration );
      offset+=SP.new_conference.duration

Я исправил эти проблемы в jsfiddle , если вы хотите посмотреть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...