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

swa*_*eek 17 javascript timestamp

我必须计算2个时间戳之间的差异.你也可以帮我把字符串转换成时间戳.仅使用普通的javascript.没有遗憾.

这是我的功能:

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>
}
Run Code Online (Sandbox Code Playgroud)

Anu*_*nuj 38

我发布自己的示例尝试在您的代码中实现此功能

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);

     document.WRITE('difference = ' + daysDifference + ' day/s ' + hoursDifference + ' hour/s ' + minutesDifference + ' minute/s ' + secondsDifference + ' second/s ');
Run Code Online (Sandbox Code Playgroud)


Com*_*ine 10

根据批准的答案:

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

    return daysDifference;
}
Run Code Online (Sandbox Code Playgroud)

  • 不知道为什么这被否决了。如果您的两个日期采用实际时间戳格式:EG`1503964800000`(这绝对比包含可能`/`也许`-`以及数字之前和三个不确定数量的`0`的废话更容易使用成员有时会进行某种安排,有时会采取另一种安排。)那么这是更好、更简单的答案。 (2认同)

Ana*_*iva 6

更好的替代方案是使用window.performance API。

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

由于 window.performance 在 Node.js 中不可用,因此更新了 Node.js。


const {performance} = require('perf_hooks');
const startTime = performance.now();

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

Run Code Online (Sandbox Code Playgroud)