如何在不使用 moment.js 的情况下通过 JavaScript 中的增量舍入到最近的小时和分钟?

How to round to nearest hour and minutes by incremment in JavaScript without using moment.js?

预期结果

舍入时间:15 分钟

给定时间 10:00 => 四舍五入为:10:00

给定时间 10:13 => 四舍五入为:10:15

给定时间 10:15 => 四舍五入为:10:15

给定时间 10:16 => 四舍五入为:10:30

给定时间 16:00 => 四舍五入为:16:00

给定时间 16:12 => 四舍五入为:16:15

舍入时间因用户输入而异

MyCode

var m = (((minutes + 7.5)/roundOffTime | 0) * roundOffTime) % 60;
var h = ((((minutes/105) + .5) | 0) + hours) % 24;

当前输出

给定时间:08:22 => 四舍五入为:08:15

给定时间:08:23 => 四舍五入为:08:30

需要四舍五入的时间应该是递增的顺序

尝试 this:

var coeff = 1000 * 60 * 5;
var date = new Date();  //or use any other date
console.log(date);
var rounded = new Date(Math.round(date.getTime() / coeff) * coeff);
console.log(rounded);

您可以将所有分钟除以 15 得到整个季度,然后乘以 15 得到结果。然后花费数小时和数分钟并应用格式。 Return 合并值。

function roundMinutes(t) {
    function format(v) { return v < 10 ? '0' + v: v; }

    var m = t.split(':').reduce(function (h, m) { return h * 60 + +m; });
    
    m = Math.ceil(m / 15) * 15;
    return [Math.floor(m / 60), m % 60].map(format).join(':');
}

var data = ['10:00', '10:13', '10:15', '10:16', '16:00', '16:12', '16:55'];

console.log(data.map(roundMinutes));