如題
因為後端是給兩個類似這種的數字 127756416859912816
我必須要把數字相減,然後轉成幾分幾秒的格式顯示在表格上
而且相減後時間可能會超過60分鐘,所以要視狀況顯示到小時,未滿1小時則顯示到小時
原本想說就
row = API的res
getDataDiff(
new Date(row.ATime),
new Date(row.BTime),
);
function getDataDiff(startDate: Date, endDate: Date) {
const endTime = endDate.getTime();
const startTime = startDate.getTime();
if (0 > startTime || 0 > endTime) {
return `無`;
}
var timeDiff = Math.abs(endDate.getTime() - startDate.getTime());
var minutes = Math.floor(timeDiff / 60);
var seconds = Math.floor(timeDiff) - minutes * 60;
return `${minutes}分${seconds}秒`;
}
但是這樣寫法
再顯示到畫面上,排序有問題,資料正確性可能也有問題
以及中間嘗試的寫法
1.
相減後的時間,不是單純的時間"相差值",而是變成描述時間幾月幾號的那種時間
=>於是顯示失敗,排序也有問題
查了datePipe
https://angular.io/api/common/DatePipe
嘗試
<td mat-cell *matCellDef="let row">
{{ row.ATime | date: 'mm:ss' }}
</td>
好像也不對
moment js
var a = moment(startTime);
var b = moment(endTime);
var diff_s = moment.duration(a.diff(b));
結果回傳 PT1.364S 這種東西
所以想問該怎樣寫,
為什麼都是吃成日期而不是單純的時間相差值
或是放棄,直接使用 moment.js來寫的話
寫法是如何處理的?
感謝