2013-05-27 210 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; 
} 
相關問題