簡體   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