[英]How to format decimal hours greater than 24 hours into hours minutes in JavaScript
我已經看到許多關於十進制小時到小時:分鍾的帖子,但是我發現沒有任何事情可以用超過一天的時間了。
我在moment.js中使用以下內容。
function formatHours(decimalHours) {
var duration = moment.duration(decimalHours, 'hours');
var hours = duration.hours();
var minutes = duration.minutes();
var date = moment().hours(hours).minutes(minutes);
var result = date.format('HH:mm');
return result;
}
但這不能持續超過24小時,例如,我有一個小時要代表一年以上。
有沒有一種方法可以處理此問題,還可以格式化當前語言環境(目前應該這樣做)
預先感謝您的任何幫助
我不知道Moment.js是什么,也不確定您要實現的目標。 但是,如果我理解得很好,您希望能夠將十進制小時(可以任意增加)轉換為日期。
我可以向您建議以下代碼:
function formatHours(decimalHours) {
let minutes = decimalHours % 1;
let hours = decimalHours - minutes;
minutes *= 60;
minutes = Math.round(minutes);
if (hours > 24) {
var day = Math.floor(hours / 24);
hours %= 24;
}
let date = new Date();
date.setHours(hours);
date.setMinutes(minutes);
if (day) {
date.setDate(day);
}
console.log(`${date}`);
}
formatHours(24.88);
這將處理任何最大為672.00(28 * 24)的十進制輸入,您可以對其進行改進以處理月份等。
正如評論者所問,您要尋找哪種格式?
我建議添加“ 矩持續時間格式”插件,該插件似乎只是為您的用例編寫的。 然后,您可以簡單地寫:
function formatHours (decimalHours) {
return moment.duration.format(hoursDecimal, 'hours').format('D:HH:mm');
};
//這是針對angular.js的
list:any = [“ 9:12”,“ 4:35”,“ 9:11”]; //正確聲明
for(var i=0 ; i < 3; i++){
var parts = this.list[i].split(":");;
var hours = parseInt(parts[0]) ;
var minutes = parseInt(parts[1]);
this.a = moment.duration(this.a._data.hours,'hours').add(hours,'hours').add(this.a._data.minutes,'minutes').add(minutes,'minutes');
}
var totalHours = (24 * this.a._data.days) + this.a._data.hours ;
var total = totalHours + ":" +this.a._data.minutes;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.