我必须计算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>
}
答案 0 :(得分:35)
我发布自己的示例尝试在您的代码中实现此功能
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 ');
答案 1 :(得分:6)
根据批准的答案:
function(timestamp1, timestamp2) {
var difference = timestamp1 - timestamp2;
var daysDifference = Math.floor(difference/1000/60/60/24);
return daysDifference;
}
答案 2 :(得分:0)
如果您的字符串是IST 2013年5月27日星期一11:46:15,您可以通过解析这些位将其转换为日期对象(假设几个月有3个字母的英文名称,根据需要进行调整):
// 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'));
请注意,如果您在同一时区使用日期字符串,则可以忽略时区以进行差异计算。如果它们位于不同的时区(包括夏令时的差异),那么您必须考虑到这些差异。
答案 3 :(得分:0)
更好的选择是使用 window.performance API.
const startTime = window.performance.now()
setTimeout(()=>{
const endTime = window.performance.now()
console.log("Time Elapsed : ",endTime-startTime) // logs ~2000 milliseconds
}, 2000)