使用javascript计算两个时间戳之间的差异

Calculate difference between 2 timestamps using javascript

本文关键字:之间 时间戳 两个 计算 javascript 使用      更新时间:2023-09-26

我必须计算两个时间戳之间的差异。你也可以帮助我转换成时间戳字符串。仅使用纯javascript。没有JQUERY .

下面是我的函数:
function clearInactiveSessions()
{
    alert("ok");
    <c:if test="${not empty pageScope.sessionView.sessionInfo}">
        var currentTime = new Date().getTime();
        alert("curr:"+currentTime);
        var difference=new Date();
        <c:forEach items="${pageScope.sessionView.sessionInfo}" var="inactiveSession">
            var lastAccessTime = ${inactiveSession.lastUpdate};
            difference.setTime(Maths.abs(currentTime.getTime()-lastAccessTime.getTime()));
            var timediff=diff.getTime();
            alert("timediff:"+timediff);
            var mins=Maths.floor(timediff/(1000*60*60*24*60));
            alert("mins:"+mins);
            if(mins<45)
                clearSession(${item.sessionID});
        </c:forEach>
    </c:if>
}

我张贴我自己的例子,尝试在你的代码中实现这个

function timeDifference(date1,date2) {
    var difference = date1.getTime() - date2.getTime();
    var daysDifference = Math.floor(difference/1000/60/60/24);
    difference -= daysDifference*1000*60*60*24
    var hoursDifference = Math.floor(difference/1000/60/60);
    difference -= hoursDifference*1000*60*60
    var minutesDifference = Math.floor(difference/1000/60);
    difference -= minutesDifference*1000*60
    var secondsDifference = Math.floor(difference/1000);
    console.log('difference = ' + 
      daysDifference + ' day/s ' + 
      hoursDifference + ' hour/s ' + 
      minutesDifference + ' minute/s ' + 
      secondsDifference + ' second/s ');
}

根据批准的答案:

function(timestamp1, timestamp2) {
    var difference = timestamp1 - timestamp2;
    var daysDifference = Math.floor(difference/1000/60/60/24);
    return daysDifference;
}

一个更好的选择是使用window。性能API。

const startTime = window.performance.now()
setTimeout(()=>{
 const endTime = window.performance.now()
 console.log("Time Elapsed : ",endTime-startTime) // logs ~2000 milliseconds
}, 2000)

从窗口开始更新node.js。性能在nodejs中不可用。


const {performance} = require('perf_hooks');
const startTime = performance.now();
    setTimeout(()=>{
     const endTime = performance.now();
     console.log("Time Elapsed : ",endTime-startTime) // logs ~2000 milliseconds
    }, 2000)

如果您的字符串是Mon May 27 11:46:15 IST 2013,您可以通过解析位(假设三个字母的英文名称为月份,根据需要进行调整)将其转换为日期对象:

// Convert string like Mon May 27 11:46:15 IST 2013 to date object 
function stringToDate(s) {
  s = s.split(/['s:]+/);
  var months = {'jan':0, 'feb':1, 'mar':2, 'apr':3, 'may':4, 'jun':5, 
                'jul':6, 'aug':7, 'sep':8, 'oct':9, 'nov':10, 'dec':11};
  return new Date(s[7], months[s[1].toLowerCase()], s[2], s[3], s[4], s[5]);
}
alert(stringToDate('Mon May 27 11:46:15 IST 2013'));

注意,如果在同一时区中使用日期字符串,则可以忽略时区,以便进行差异计算。如果它们在不同的时区(包括夏令时的差异),那么您必须考虑这些差异。

获取时差的简单方法。

var initialTime = new Date();
var finalTime = new Date();
console.log({
    days: finalTime.getDay() - initialTime.getDay(),
    hours: finalTime.getHours() - initialTime.getHours(),
    minutes: finalTime.getMinutes() - initialTime.getMinutes(),
    seconds: finalTime.getSeconds() - initialTime.getSeconds(),
    milliseconds: finalTime.getMilliseconds() - initialTime.getMilliseconds(),
});