2010-12-14 6 views
8

Ich habe sah: Get difference between 2 dates in javascript?JavaScript Date Unterschied

Und ich kann immer noch nicht bekommen dies funktioniert.

var difference = data.List[0].EndDate - Math.round(new Date().getTime()/1000.0) * 1000; 
var daysRemaining = Math.floor(difference/1000/60/60/24); 
var hoursRemaining = Math.floor(difference/1000/60/60 - (24 * daysRemaining)); 
var minutesRemaining = Math.floor(difference/1000/60 - (24 * 60 * daysRemaining) - (60 * hoursRemaining)); 
var secondsRemaining = Math.floor(difference/1000 - (24 * 60 * 60 * daysRemaining) - (60 * 60 * hoursRemaining) - (60 * minutesRemaining)); 

data.List [0] .EndDate ist eine UTC-Nummer (wie: 1291427809310 (http://www.epochconverter.com/)), die immer später als das aktuelle Datum sein wird.

+0

was erwarten Sie als Ausgabe? –

+0

um die richtigen Stunden, Minuten und Sekunden zu haben. – williamparry

+1

Was bedeutet "ich kann es nicht zur Arbeit bringen" genau? – epascarello

Antwort

5

Sie sagen, dass UTC Timestamp "2004-09-16T23: 59: 58.75" ist?

So sind Sie im Grunde tun

var x = "2004-09-16T23:59:58.75" - 123456 

Nun, da Sie stellte klar, dass, als die oben gilt nicht. Ihr neues Problem ist die Anzahl der Millisekunden in der Vergangenheit. Wenn Sie die Differenzberechnung durchführen, erhalten Sie eine negative Zahl. Sie möchten wahrscheinlich die Reihenfolge umtauschen.

var difference = new Date().getTime()-data.List[0].EndDate; 
+0

Entschuldigung mein Schlechter, es ist eine Nummer wie 1291427809310 – williamparry

+0

Neue Informationen basierend auf dem, was Sie im Kommentar – epascarello

3

Wenn EndDate in Millisekunden, und getTime() gibt Millisekunden, warum teilen Sie es mit 1000 nur sie in der gleichen Zeile mit 1000 zu multiplizieren? Und wenn Sie nur die zweite Genauigkeit für den restlichen Code benötigen, warum in Millisekunden arbeiten? Beginnen Sie mit einer Anzahl von Sekunden, um alle Berechnungen zu vereinfachen:

var difference = Math.round((data.List[0].EndDate - new Date().getTime())/1000); 
11
function days_between(date1, date2) { 

    // The number of milliseconds in one day 
    var ONE_DAY = 1000 * 60 * 60 * 24 

    // Convert both dates to milliseconds 
    var date1_ms = date1.getTime() 
    var date2_ms = date2.getTime() 

    // Calculate the difference in milliseconds 
    var difference_ms = Math.abs(date1_ms - date2_ms) 

    // Convert back to days and return 
    return Math.round(difference_ms/ONE_DAY) 

} 

http://www.mcfedries.com/javascript/daysbetween.asp

+6

hinzugefügt Dies kümmert sich nicht um Fälle, wo Datum1 und Datum2 überspannen ein Tag Licht sparen Veranstaltung ändern. Siehe http://stackoverflow.com/a/15289883/850996 –

+0

In welchem ​​Format sollte ich das Datum weitergeben? – nirav

0

Ich schrieb eine component, die genau das tut, wenn Sie nicht eine vollständige Bibliothek verwenden möchten y mag moment.js. Es kann auch die Differenz in einer beliebigen Zeiteinheit ausgeben (Tage, Wochen, Monate, Minuten, Stunden usw.).

Hier ist, wie es funktionieren würde:

var date1 = date.getTime(); 
var date2 = data.List[0].EndDate; 

var millisecondsRemaining = dateDiff(date1, date2, 'milliseconds'); 
var secondsRemaining = dateDiff(date1, date2, 'seconds'); 
var minutesRemaining = dateDiff(date1, date2, 'minutes'); 
var hoursRemaining = dateDiff(date1, date2, 'hours'); 
var daysRemaining = dateDiff(date1, date2, 'days'); 
var weeksRemaining = dateDiff(date1, date2, 'weeks'); 
var monthsRemaining = dateDiff(date1, date2, 'months'); 
var yearsRemaining = dateDiff(date1, date2, 'years'); 

die DATEDIFF() verwenden Methode können Sie einfach die Komponente importieren.