簡體   English   中英

使用JavaScript的時間總和

[英]Sum of to times using javascript

誰能告訴我如何使用javascript(momentjs)來做兩次求和:

2:44:56和2:50:56

我試過了但是沒用:

2:44:56 + 2:50:56

有什么建議嗎?

Momentjs有一個duration對象,可用於添加或減去兩個或更多時間跨度。

const a = moment.duration('02:44:56');
const b = moment.duration('02:50:56');

const c = a.add(b);

console.log(c.hours() );
console.log(c.minutes() );
console.log(c.seconds() );

您可以這樣做。 在矩對象上使用add方法並傳遞數據。

let x = moment({  
         hours:'2', 
         minutes:'44',
         seconds:'56'})
       .add({ 
         hours:'2',
         minutes:'50', 
         seconds:'56' })
 console.log(x)

或動態傳遞數據

let time = {
   hours: 2,
   minutes:44, 
   seconds: 56
}
let time2 = {
   hours: 2,
   minutes:50, 
   seconds: 56
}
let y = moment(time)
         .add(time2)
console.log(y)

可以加上秒,然后計算進位值,並將其加到分鍾數總和中,依此類推。 使用reduce可以很容易地做到這一點:

function sum(date1, date2){
  date1 = date1.split(":");
  date2 = date2.split(":");
  const result = [];

  date1.reduceRight((carry,num, index) => {
    const max = [24,60,60][index];
    const add =  +date2[index];
    result.unshift( (+num+add+carry) % max );
    return Math.floor( (+num + add + carry) / max );
  },0);

 return result.join(":");
}

console.log(
  sum("2:44:56" , "2:50:56" )
);

試試吧

編碼:

var t1 = moment('2:44:56', 'HH:mm:ss');
var t2 = '2:50:56';
var parsed_t2 = t2.split(':') // [2, 50, 56]

var r = t1.add({
  hours: parsed_t2[0], // 2
  minutes: parsed_t2[1], // 50
  seconds: parsed_t2[2], // 56
});

過程:

  1. 將字符串解析為矩對象(幫助它定義我們正在使用的格式;
  2. 通過使用split()函數來split()我們想要添加到t1的時間,可以有效地將t2分割成一個數組,其中有[hours, minutes, seconds]
  3. 使用moments add()方法將時間add()在一起。

工作實例

moment()函數以小時,分鍾,秒為參數,並返回一個帶有對象add()的矩對象,該方法也可以以小時,分鍾,秒為參數,並返回總時間。

嘗試addTimes(time1,time2)

function addTimes(time1, time2) {
   let [hours1, minutes1, seconds1] = time1.split(':');
   let [hours2, minutes2, seconds2] = time2.split(':');
   return moment({ hours: hours1, minutes: minutes1, seconds: seconds1 })
       .add({ hours: hours2, minutes: minutes2, seconds: seconds2 })
       .format('h:mm:ss');
}

console.log(addTimes('2:44:56', '2:50:56'));

好的老JS解決方案:

 var base = new Date(0); var t1 = new Date(base); var t2 = new Date(base); t1.setUTCHours(2,45,50); t2.setUTCHours(2,50,50); var t = new Date(t1.getTime() + t2.getTime() - base.getTime()); result = t.getUTCHours() + ":" + t.getUTCMinutes() +":" + t.getUTCSeconds(); console.log(result); 

請注意,JS會自動將一天中的時間轉換為GMT時區,因此我們需要使用UTC版本的時間函數。

暫無
暫無

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

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