2013-05-27 163 views
9

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

这里是我的功能:

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> 
} 
+6

你尝试什么吗? – NINCOMPOOP

+2

什么格式是“时间戳”,ISO8601?非时间戳字符串看起来像...? – RobG

+1

'var diff = Math.abs(date1-date2);' – elclanrs

回答

25

我张贴我自己的例子尝试在你的代码

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 '); 
+0

如果我需要date1中的当前时间,该怎么办。将var date1 = new Date.getTime();诀窍吗? – swateek

+0

这将工作,var date1 = new Date()。getTime() – Anuj

+0

如果我有像“Mon May 27 11:46:15 IST 2013”​​这样的字符串,我该如何将它转换为时间戳并计算它与此之间的分钟差当前时间..pleaseE? – swateek

0

实现这个如果你的字符串是周一5月27日11点46分15秒北京时间2013,你可以通过解析这些位将其转换为日期对象(假设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')); 

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

-1

按照经核准的答案:

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

    return daysDifference; 
} 
相关问题