繁体   English   中英

如何使用moment.js按降序创建最后1小时的分钟数组?

[英]how to create last 1 hour's minutes array in descending order using moment.js?

我有一个用例,我需要按降序创建一个间隔为 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:2014:25开始按降序排列。

还有一件事是关于如何打印开头与0连接的个位数分钟,例如,将15:5 PM转换为15:05 PM

有没有办法解决这个问题?

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

您可以使用 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 轮等……您必须获取最后一轮的时间。

 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM