2016-05-29 10 views
0

Ich versuche, Datum Unterschied zwischen 2 Daten in Stunden ohne Verwendung von 3rd Party Dates verwandte Bibliothek zu finden. Ich habe den folgenden Code verwendet, aber es zeigt falsche Stunden an. Irgendein besserer Vorschlag oder Zeiger, um das bitte zu korrigieren.Jquery Datumsunterschied in Stunden

My fiddle

var FutureDate=new Date('2016-05-08T05:19:05.83'); 
var TodayDate = new Date(); 
var t1 = FutureDate.getTime(); 
var t2 = TodayDate.getTime(); 
var diffInHours = parseInt((t2-t1)/(24*3600*1000)); 
alert(diffInHours); 
+1

Warum enthält Ihre Formel '24'? Sie versuchen, Millisekunden in Stunden und nicht in Tage zu konvertieren. – nnnnnn

+0

Ich versuche herauszufinden, wie viele Stunden der Unterschied ist. – Kurkula

+1

Ja. Und Sie haben die Differenz ('t2-t1') in Millisekunden. Also, mathematisch gesprochen, wie sollten Sie Millisekunden in Stunden umrechnen? – nnnnnn

Antwort

1
var futureDate = new Date('2016-06-08T05:19:05.83'); 
var todayDate = new Date(); 
var milliseconds = futureDate.getTime() - todayDate.getTime(); 
var hours = Math.floor(milliseconds/(60 * 60 * 1000)); 
alert('Hours: ' + hours); 
  1. Stunde: Minute = 1: 60
  2. Minuten: Sekunden = 1: 60
  3. Sekunden: Millisekunde = 1: 1000
  4. Stunden: Millisekunde = 1: 60x60x1000
1

Sie können tatsächlich subtrahieren stammt aus jedem nativ andere.

var msIn1Hour = 3600 * 1000; 
var TodayDate = new Date(); 
var FutureDate = new Date('2016-05-08T05:19:05.83'); 

alert((TodayDate - FutureDate)/msIn1Hour); 

Hinweis: Ich bin nicht ganz sicher, warum Sie parseInt verwendet, da dies eine string in eine int konvertieren verwendet werden soll. Wenn Sie eine Nummer runden möchten, verwenden Sie Math.floor oder Math.round.

1

Entfernen Sie einfach die Division durch 24 aus Ihrer Formel. Diese 24 konvertiert sie tatsächlich zu difference in days.

t2-t1 = x milliseconds 
x/1000 = y seconds 
y/3600 = z hours 

Sie sind fertig, wenn Sie z. Also, Sie müssen nicht die Teilung durch 24 zu tun. So können Sie einfach schreiben

var FutureDate=new Date('2016-05-08T05:19:05.83'); 
var TodayDate = new Date(); 
var t1 = FutureDate.getTime(); 
var t2 = TodayDate.getTime(); 
var diffInHours = Math.floor((t2-t1)/(3600*1000)); //Removed the 24 here 
alert(diffInHours); 
+0

wie oben Kommentar parseInt möglicherweise nicht die beste Option. – Kurkula

+1

Das ist wahr. Das habe ich vermisst. danke: D – divinemaniac