2013-05-27 20 views
9

Muszę obliczyć różnicę między 2 znacznikami czasowymi. Czy możesz mi pomóc z konwersją ciągu na znacznik czasu? Używanie tylko zwykłego javascript. BRAK JACERY.Oblicz różnicę między 2 znacznikami czasu przy użyciu javascript

Oto moja funkcja:

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

Czy spróbować jeszcze czegoś? – NINCOMPOOP

+2

Jaki jest format "sygnatury czasowej", ISO8601? A ciąg znaków niebędących sygnaturą czasową wygląda jak ...? – RobG

+1

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

Odpowiedz

25

jestem delegowania mój własny przykład spróbować zaimplementować to w kodzie

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

co jeśli potrzebowałem aktualnego czasu w date1. Czy var date1 = new Date.getTime(); Zrób sztuczkę? – swateek

+0

to zadziała, var date1 = new Data(). GetTime() – Anuj

+0

jeśli mam ciąg znaków typu "Mon 27 maja 11:46:15 IST 2013" jak mogę przekonwertować go na znacznik czasu i obliczyć różnicę w minutach między tym a aktualny czas .. miec? – swateek

0

Jeśli łańcuch jest pon 27 maj 2013 11:46:15 IST, ty można przekonwertować go na obiekt daty, analizując bity (przyjmując 3-literowe angielskie nazwy na miesiące, dostosowując odpowiednio):

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

Należy pamiętać, że jeśli używasz ciągów daty w tej samej strefie czasowej, możesz zignorować strefę czasową w celu obliczenia różnicy. Jeśli są w różnych strefach czasowych (w tym różnicach czasu letniego), należy wziąć pod uwagę te różnice.

-1

podstawie zatwierdzonego odpowiedź:

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

    return daysDifference; 
} 
Powiązane problemy