首页 > 解决方案 > Javascript以vali增量循环日期/时间

问题描述

我试图以定义的增量从开始时间到一天结束建立一个表。

例如:如果用户从上午 8:10 开始选择 15 分钟增量,则时间为 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);

标签: javascriptdate

解决方案


在这一行中,您的 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中解决了这个问题


推荐阅读