web-dev-qa-db-fra.com

Calculer la différence entre 2 horodatages à l'aide de javascript

Je dois calculer la différence entre 2 timestamps. Aussi pouvez-vous s'il vous plaît m'aider à convertir une chaîne en timestamp. Utilisation de javascript simple uniquement. NO JQUERY.

Voici ma fonction:

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>
}
12
swateek

je poste mon propre exemple essayez d'implémenter cela dans votre code 

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 ');
30
Anuj

Basé sur la réponse approuvée:

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

    return daysDifference;
}
6
Combine

Si votre chaîne est lun 27 mai 11:46:15 IST 2013, vous pouvez le convertir en objet date en analysant les bits (en supposant que les noms anglais à 3 lettres des mois soient ajustés au besoin):

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

Notez que si vous utilisez des chaînes de date dans le même fuseau horaire, vous pouvez ignorer le fuseau horaire pour les calculs de différence. S'ils se trouvent dans des fuseaux horaires différents (y compris les différences d'heure), vous devez alors prendre en compte ces différences.

0
RobG