我有一个用例,我需要创建一个分钟数组,间隔5分钟,按降序排列。我需要创建过去1小时的数组。我试过moment.js。我得到了结果,但没有按排序顺序。这是我到目前为止尝试过的方法。
let dates = [];
for (let i = 0; i < 60; i++) {
dates.push(moment(new Date()).subtract(i, 'minutes').format('HH:' + i + ' A'));
i = i + 4;
}
console.log(dates)<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
这是我得到的结果集。
15:0 PM
15:5 PM
15:10 PM
15:15 PM
15:20 PM
14:25 PM
14:30 PM
14:35 PM
14:40 PM
14:45 PM
14:50 PM
14:55 PM结果以未排序的方式显示。我希望它们以从15:20到14:25的降序排列在最后。
还有一件事是关于如何打印开头与0连接的一位数分钟,例如,将15:5 PM转换为15:05 PM。
有没有解决这个问题的办法?
发布于 2019-12-12 18:33:25
使用HH:mm格式
let dates = [];
let start = moment()
let minutes = start.minute()
start = start.minute(5 * (Math.floor(Math.abs(minutes / 5))))
for (let i = 0; i < 60; i += 5) {
dates.push(start.subtract(5, 'minutes').format('HH:mm A'));
}
console.log(dates)<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
发布于 2019-12-12 18:42:04
您可以使用isAfter在两个时刻之间进行迭代。
let from = moment(); // Now
const to = moment().subtract(1, 'hour'); // 1 hour ago
const result = [];
while (from.isAfter(to)) {
from = from.subtract(5, 'minute');
result.push(moment(from));
}
console.log(result.map(h => h.format('HH:mm A')));<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
结果将给出一个从当前分钟开始的数组。如果你想赢10,15,20,等等...你得去拿最后一分钟。
发布于 2019-12-12 18:53:59
let dates = [];
let start = moment().startOf("minute");
start.minute(Math.floor(start.minute() / 5) * 5);
for (let i = 0; i < 60; i += 5) {
dates.push(start.format("HH:mm A"));
start.subtract(5, "minutes");
}
console.log(dates);<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
https://stackoverflow.com/questions/59302276
复制相似问题