如何獲取兩個日期時間之間的時間差(以秒為單位),一個是來自后端的 ZoneDateTime 形式,另一個是收到回應時前端的當前時間。
來自后端的回應時間是 -
callStartTime:{
chronology: {id: 'ISO', calendarType: 'iso8601'}
dayOfMonth: 8
dayOfWeek: "TUESDAY"
dayOfYear: 39
hour: 16
minute: 15
month: "FEBRUARY"
monthValue: 2
nano: 240000000
offset: {totalSeconds: 19800, id: ' 05:30', rules: {…}}
second: 29
year: 2022
zone: {id: 'Asia/Calcutta', rules: {…}}
從這個我怎樣才能找到當前時間和這個時間之間的差異(以秒為單位)?
uj5u.com熱心網友回復:
根據資料計算等效的 ECMAScript 時間值。從當前時間值中減去它,你就有毫秒的差異,例如
function getTimeDiff(data, date = new Date()) {
let utc = new Date(Date.UTC(
data.year,
data.monthValue - 1,
data.dayOfMonth,
data.hour,
data.minute,
data.second
) - data.offset.totalSeconds*1e3);
return date - utc;
}
function msToTime(ms) {
let days = ms / 8.64e7 | 0;
let hrs = (ms%8.64e7) / 3.6e6 | 0;
let mins = (ms%3.6e6) / 6e4 | 0;
let secs = (ms%6e4) / 1e3 | 0;
let z = n => (n<10? '0':'') n;
return `${days? days ' day' (days == 1? ' ' : 's ') : ''}${z(hrs)}:`
`${z(mins)}:${z(secs)}`;
}
let callStartTime = {
chronology: {id: 'ISO', calendarType: 'iso8601'},
dayOfMonth: 8,
dayOfWeek: "TUESDAY",
dayOfYear: 39,
hour: 16,
minute: 15,
month: "FEBRUARY",
monthValue: 2,
nano: 240000000,
offset: {totalSeconds: 19800, id: ' 05:30', rules: {}},
second: 29,
year: 2022,
zone: {id: 'Asia/Calcutta', rules: {}}
};
['2022-02-08T16:15:29 05:30', // 0
null // now
].forEach(ts => {
let data = callStartTime;
let compDate = ts? new Date(ts) : new Date();
let diffMs = getTimeDiff(data, compDate);
console.log(`${ts || compDate.toISOString()} : `
`${diffMs} ms (${msToTime(diffMs)})`
);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/428386.html
下一篇:AngularJS表格格式
