首页 > 解决方案 > 如何使用moment.js按降序创建最后1小时的分钟数组?

问题描述

我有一个用例,我需要按降序创建一个以 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 PM15:05 PM.

有什么解决方案可以解决这个问题吗?

标签: javascriptmomentjs

解决方案


使用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>


推荐阅读