2013-05-27 28 views
9

devo calcolare la differenza tra 2 timestamp. Puoi anche aiutarmi con la conversione di una stringa in timestamp. Solo con javascript semplice. NESSUN JQUERY.Calcolare differenza tra 2 timestamp utilizzando JavaScript

Ecco la mia funzione:

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

Hai provato qualcosa? – NINCOMPOOP

+2

Quale formato è il "timestamp", ISO8601? E la stringa non-timestamp sembra ...? – RobG

+1

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

risposta

25

Vi metto il mio esempio provare implementare questo nel codice

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

e se avessi bisogno dell'ora corrente in data1. Var var1 = new Date.getTime(); fare il trucco? – swateek

+0

questo funzionerà, var date1 = new Date(). GetTime() – Anuj

+0

se ho una stringa come "Mon 27 mag 11:46:15 IST 2013" Come posso convertirlo in timestamp e calcolare la differenza in minuti tra questo e l'ora attuale ... – swateek

0

Se la stringa è Lun 27 Mag 11:46:15 IST 2013, è può convertirlo in un oggetto data analizzando i bit (assumendo nomi inglesi di 3 lettere per mesi, regolare secondo necessità):

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

Si noti che se si utilizzano stringhe di data nello stesso fuso orario, è possibile ignorare il fuso orario per il calcolo delle differenze. Se si trovano in fusi orari diversi (comprese le differenze nell'ora legale), è necessario tenere conto di tali differenze.

-1

Sulla base della risposta approvato:

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

    return daysDifference; 
} 
Problemi correlati