簡體   English   中英

使用moment.js將秒持續時間格式化為DD:HH:mm格式

[英]Formatting seconds duration into DD:HH:mm format by using moment.js

我正在嘗試計算從秒到DD-HH-mm格式的持續時間

我的JavaScript代碼:

var seconds = 120;
var result = moment.utc(seconds*1000).format('DD:HH:mm');

我的代碼應返回如下內容: 00 : 00 : 02 (DD:HH:MM),但它返回的內容是: 01 : 00 : 02 (DD:HH:MM)

我確定那是因為我的當地時間,但是通常如何確定1小時間隔?

moment.utc創建一個時區設置為GMT / UTC的moment.js對象。 使用持續時間的日期時,需要允許日期從1開始,而不是零。 另外,如果持續時間為32天或更長時間,則“天數”將重置為1。

Moment.js也具有持續時間 ,但是,除了“ 人性化 ”或轉換為特定單位外,它們不支持格式化。

如果持續時間少於32天,則可以使用任何年份中從1月1日開始的日期,前提是您要處理的天數不為零索引(即從天數中減去1)。

因此,使用moment.js獲取所需的格式比僅格式化日期要耗費更多的精力,您將需要執行一系列步驟,因此請考慮編寫函數。 在這種情況下,普通的JS函數只需要片刻即可完成,它將處理32天或更長時間,並且不受諸如日光節約和時區之類的日期變化的影響。

 var secs = 120; // Using a duration var m = moment.duration(secs * 1000); console.log(m); console.log(m.humanize()); console.log(m.asMinutes()); // Using a date and seconds value var x = moment.utc(secs*1000); // Generated date console.log(x.format()); // Get the days separately var dayNum = x.format('D') - 1; // Format with hours and minutes console.log(('0'+dayNum).slice(-2) + x.format(':HH:mm')) // Function using moment.js function myFormat(secs) { var x = moment.utc(secs*1000); var dayNum = x.format('D') - 1; return ('0'+dayNum).slice(-2) + x.format(':HH:mm'); } // Function without using a Date function duration(secs) { function z(n){return ('0'+n).slice(-2)} return z((secs/8.64e4|0)) + ':' + z((secs%8.64e4)/3.6e3|0) + ':' + z((secs%3.6e3)/60|0) // + ':' + z(secs%60); } console.log(duration(secs)); // Some other tests var min = 60; var hr = 60*min; // 3,600 var day = 24*hr; // 86,400 //2 days 17 hours 53 minutes and 08 seconds var d = 2*day + 17*hr + 53*min + 8; //0 days 1 hour 2 minutes and 1 second var e = 0*day + 1*hr + 2*min + 1; // 48 days 21 hours 15 minutes var f = 48*day + 21*hr + 15*min; [120, d, e, f].forEach(function(d) { console.log(d + ' seconds'); console.log('Plain js: ' + duration(d)); console.log('Moment fn: ' + myFormat(d)); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script> 

該格式似乎模棱兩可,我想許多人會將其解釋為HH:mm:ss而不是DD:HH:mm。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM