4 回答

TA貢獻1856條經驗 獲得超17個贊
如果你只想要秒數(diff)為什么不使用帶有測量參數的 momentjs 的 diff 函數(支持的是years,,,,,,,默認是毫秒monthsweeksdayshoursminutesseconds。)
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days') // 1
let dateStart = moment([2020, 9, 2, 12, 0, 0, 125]);
let futureTime = moment();
let secondsAgo = (futureTime.diff(dateStart, 'seconds') % 60);
let minutesAgo = (futureTime.diff(dateStart, 'minutes') % 60);
let hoursAgo = futureTime.diff(dateStart, 'hours');
console.log('hour: ' + hoursAgo + ', minute: ' + minutesAgo + ', seconds: ' + secondsAgo)
let hms = moment({
hour: hoursAgo,
minute: minutesAgo,
seconds: secondsAgo
});
console.log(hms.format('HH:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.0/moment.min.js"></script>

TA貢獻1802條經驗 獲得超4個贊
我懷疑您正在將 4 秒后的日期格式化為 1970 年 1 月 1 日,并根據您的時區偏移量進行了調整。您正在尋找duration,而不是 date 。
為什么要格式化它?為什么不只記錄原始持續時間?您不需要時刻從另一個時間戳中減去一個時間戳。Date.now() 將為您提供當前時間戳:
this.startDate = Date.now();
// ...a few moments later...
const duration = Date.now() - this.startDate; // number of ms between then and now

TA貢獻1858條經驗 獲得超8個贊
plotly.js 中沒有函數將差異作為新的 plotly 對象返回。我認為做到這一點的唯一方法是以秒為單位獲取時差,然后計算分鐘和小時。
以下應該工作。它將時差返回為String。所以秒和分鐘總是在 0 到 60 之間,小時大于 0。結果意味著74:12:40用戶在該頁面上停留了 74 小時 12 分 40 秒。
function runTest() {
let startDate = moment('02.10.2020 8:00:00', 'DD.MM.YYYY HH:mm:ss');
let endDate = moment('03.10.2020 10:24:38', 'DD.MM.YYYY HH:mm:ss');
getDifferenceTime(startDate, endDate);
}
function getDifferenceTime(startDate, endDate) {
// Get time difference in seconds
let seconds = endDate.diff(startDate, 'seconds');
let minutes = 0;
let hours = 0;
// Calculate number of minutes
if (seconds >= 60) {
minutes = Math.floor(seconds / 60);
seconds -= minutes * 60;
}
// Calculate number of hours
if (minutes >= 60) {
hours = Math.floor(minutes / 60);
minutes -= hours * 60;
}
let timeString = hours + ':' + minutes + ':' + seconds;
console.log(timeString);
return timeString;
}
您可以使用上面截取的代碼對其進行測試。它應該返回26:24:38,這是您的預期輸出。

TA貢獻1840條經驗 獲得超5個贊
您可以先嘗試轉換為 UTC。
moment.utc(moment().diff(this.dateStart)).format("HH:mm:ss.SSS"); //include milliseconds
let start = moment();
setTimeout(() => {
const duration = moment.utc(moment().diff(start));
console.log(duration.format("HH:mm:ss.SSS"));
}, 1500);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.0/moment.min.js"></script>
添加回答
舉報