亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

momentjs獲取時差

momentjs獲取時差

慕碼人8056858 2023-04-14 15:35:04
我試圖獲取用戶在帶有 moment.js 的頁面上花費的時間,但它返回了錯誤的值。代碼:dateStart: any;ngOnInit() {  this.dateStart = moment(); // current time}// when user post data before being redirectmoment(moment(this.dateStart).diff(moment())).format("hh:mm:ss");例如,上面的代碼應該返回00:00:04,這意味著用戶在這個頁面中是為了4 seconds。但我得到了這樣的東西06:59:55有任何想法嗎?
查看完整描述

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>



查看完整回答
反對 回復 2023-04-14
?
慕虎7371278

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


查看完整回答
反對 回復 2023-04-14
?
猛跑小豬

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,這是您的預期輸出。


查看完整回答
反對 回復 2023-04-14
?
慕斯709654

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>


查看完整回答
反對 回復 2023-04-14
  • 4 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號