2016-08-18 4 views
0

Ich habe zwei Tage, die ich im folgende Format bekommen -, die von einem Webdienst zurückgegeben werden:AngularJS - Javascript Anzahl der Tage zwischen zwei Terminen

var dateone = "2016-08-21T07:00:00.000Z"; 
var datetwo = "2016-08-28T07:00:00.000Z"; 
var datediff = datetwo - dateone; 
var numdays = Math.round(datediff); 
console.log("Number of Days is " + numdays); 

I NaN bekommen. Was fehlt mir hier?

Antwort

2

Ihre dateone und datetwo Variablen sind String s nicht Date s. Try this:

var dateone = new Date("2016-08-21T07:00:00.000Z"); 
var datetwo = new Date("2016-08-28T07:00:00.000Z"); 

Auch 2 Date s Objekte Substraktion werden Sie den Unterschied zwischen ihnen in Millisekunden geben, wenn Sie die Anzahl der Tage, um bestimmen möchten, können Sie etwas tun:

var dayDif = (datetwo - dateone)/1000/60/60/24; 
+0

Hat nicht funktioniert. Anzahl der Tage ist 604800000 – singh

+0

@JotiBasi Ich habe meine Antwort bearbeitet, um das zu erklären. – Titus

+0

Danke, das hat funktioniert. Wissen Sie, ob ich in AngularJS Mathe am Präsentationslayer machen kann, wenn ich {{dateone}} und {{datetwo}} habe – singh

1

Sie können mit moment.js

var a = moment('2016-08-21T07:00:00.000Z'); 
var b = moment('2016-08-28T07:00:00.000Z'); 
var days = b.diff(a, 'days'); 

JsFiddle

leicht zu tun
0

als auch, was Titus sagte über sie in Daten, anstatt Strings drehen, versuchen, etwas wie folgt aus:

var oneDay = 24*60*60*1000; // Calculates milliseconds in a day 
var diffDays = Math.abs((dateone.getTime() - datetwo.getTime())/(oneDay)); 

Ich weiß nicht, was Sie Math.round() erwartet für Sie zu tun, aber ich Ich sehe das nicht viel. Math.abs() stellt sicher, dass die Differenz positiv ist, während die Subtraktion der beiden getTime() - Funktionen die Differenz in Millisekunden ergibt.

Hoffe, das hilft.

Verwandte Themen