首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用moment.js创建最近1小时的降序分钟数组?

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

Stack Overflow用户
提问于 2019-12-12 18:16:49
回答 3查看 122关注 0票数 0

我有一个用例,我需要创建一个分钟数组,间隔5分钟,按降序排列。我需要创建过去1小时的数组。我试过moment.js。我得到了结果,但没有按排序顺序。这是我到目前为止尝试过的方法。

​

代码语言:javascript
复制
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)
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

​

这是我得到的结果集。

代码语言:javascript
复制
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。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-12 18:33:25

使用HH:mm格式

​

代码语言:javascript
复制
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)
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

​

票数 4
EN

Stack Overflow用户

发布于 2019-12-12 18:42:04

您可以使用isAfter在两个时刻之间进行迭代。

​

代码语言:javascript
复制
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')));
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

​

结果将给出一个从当前分钟开始的数组。如果你想赢10,15,20,等等...你得去拿最后一分钟。

票数 1
EN

Stack Overflow用户

发布于 2019-12-12 18:53:59

​

代码语言:javascript
复制
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);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59302276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档