2017-06-20 2 views
0

ich bin eine FunktionSafari Datum Unterschied gibt nan

ein bestimmtes Datum und Uhrzeit vom heutigen Datum und Zeit zu subtrahieren
<script> 
function timeDifference(previous) { 

    var msPerMinute = 60 * 1000; 
    var msPerHour = msPerMinute * 60; 
    var msPerDay = msPerHour * 24; 
    var msPerMonth = msPerDay * 30; 
    var msPerYear = msPerDay * 365; 

    var elapsed = new Date() - new Date(previous); 

    if (elapsed < msPerMinute) { 
     return Math.round(elapsed/1000) + ' seconds ago'; 
    } 

    else if (elapsed < msPerHour) { 
     return Math.round(elapsed/msPerMinute) + ' minutes ago'; 
    } 

    else if (elapsed < msPerDay) { 
     return Math.round(elapsed/msPerHour) + ' hours ago'; 
    } 

    else if (elapsed < msPerMonth) { 
     return Math.round(elapsed/msPerDay) + ' days ago'; 
    } 

    else if (elapsed < msPerYear) { 
     return Math.round(elapsed/msPerMonth) + ' months ago'; 
    } 

    else { 
     return Math.round(elapsed/msPerYear) + ' years ago'; 
    } 
} 
</script> 

diese Funktion funktioniert perfekt in Firefox, Chrome, aber geben NaN auf Safari eine Ahnung, warum das passiert ?

+0

fein Was * der Wert von * vorigen ist? Ich nehme an, dass es etwas wie "2017-06-21 12:30:00" ist. Haben Sie gelesen [* Warum gibt Date.parse falsche Ergebnisse? *] (Https://stackoverflow.com/questions/2587345/why-does-date-parse-give-incorrect-results) – RobG

+0

löste ich es mit Moment ersetzt Neues Datum und neues Datum (Prevoius) mit Moment() – JenuRudan

+0

Dann löschen Sie bitte diese Frage. – RobG

Antwort

0

Gebraucht Moment statt Bisher funktioniert alles

<script> 
function timeDifference(previous) { 

var msPerMinute = 60 * 1000; 
var msPerHour = msPerMinute * 60; 
var msPerDay = msPerHour * 24; 
var msPerMonth = msPerDay * 30; 
var msPerYear = msPerDay * 365; 

var elapsed = new moment() - new moment(previous); 

if (elapsed < msPerMinute) { 
    return Math.round(elapsed/1000) + ' seconds ago'; 
} 

else if (elapsed < msPerHour) { 
    return Math.round(elapsed/msPerMinute) + ' minutes ago'; 
} 

else if (elapsed < msPerDay) { 
    return Math.round(elapsed/msPerHour) + ' hours ago'; 
} 

else if (elapsed < msPerMonth) { 
    return Math.round(elapsed/msPerDay) + ' days ago'; 
} 

else if (elapsed < msPerYear) { 
    return Math.round(elapsed/msPerMonth) + ' months ago'; 
} 

else { 
    return Math.round(elapsed/msPerYear) + ' years ago'; 
} 
} 
</script>