2016-11-03 10 views
0

Erhalten Unterschied zwischen zwei Terminen in Javascript

var date1 = new Date("04.11.2016"); 
 
var date2 = new Date("19.11.2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
alert(diffDays);

zwischen diesen Daten bekommen verschiedenen Versuchen, aber mein Datumsformat ist, dass "2016.04.11", zeigen Ergebnis NaN

+0

[momentjs] (https://momentjs.com/) – Andreas

+0

Haben Sie versucht Daten anmelden? 'date2' ist null – Rajesh

+1

' date2' ist ein ungültiges Datum. Sie haben "DD-MM-YYYY" bestanden, aber es sollte "MM-DD-YYYY" (11.19.2016) –

Antwort

3

var date1 = new Date("11/04/2016"); 
 
var date2 = new Date("11/19/2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
alert(diffDays);

ändern Sie das Format des Datums.

sollte MM/DD/YYYY

this helps sein.

1

Der einfachste Weg ist moment.js Bibliothek zu verwenden:

var date1 = moment('04.11.2016', 'MM.DD.YYYY'), 
    date2 = moment('19.11.2016', 'MM.DD.YYYY'), 
    diffDays = date2.diff(date1, 'days'); // you can wrap it in Math.abs() 

Der hässliche js Weg:

var input1 = '04.11.2016', 
    parts1 = input1.split('.'), 
    date1 = new Date(parts1[2], parts1[1], parts1[0]), 
    input2 = '19.11.2016', 
    parts2 = input2.split('.'), 
    date2 = new Date(parts2[2], parts2[1], parts2[0]), 
    timeDiff = Math.abs(date2.getTime() - date1.getTime()), 
    diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
0

prüft diese Lösung, die eine Funktion verwendet getDate genannt, das Datum durch das Format zu konvertieren "04.11.2016" zu einem JavaScript-Date-Objekt.

function getDate(dateStr) { 
 
    var arr = dateStr.split('.'); 
 

 
    return new Date(arr[2], arr[1], arr[0]); 
 
} 
 

 
var start = getDate("04.11.2016"); 
 
var end = getDate("19.11.2016"); 
 
var timeDiff = Math.abs(end.getTime() - start.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 60 * 60 * 24)) 
 
console.log('Number of days: ' + diffDays);

Um diesen Code zu verwenden, um ein benutzerdefinierter JavaScript-Variable in Google Tag Manager zu erstellen, können Sie den obigen Code oder die ändern, die Sie wählen innerhalb einer Funktion zu sein - reference.

Custom JavaScript Variable in Google Tag Manager

Custom JavaScript Variable in Google Tag Manager

+0

@aboud geben Kompilierungsfehler - http://screencast.com/t/ym9KHtWBK0 –

+0

@MargubAlam, könnte Sie posten die eigentliche Fehlermeldung und in welcher Umgebung haben Sie diesen Code ausgeführt? –

+0

dieser Fehler Fehler in Zeile 7, Zeichen 1: Parse-Fehler. ')' erwartet - http://screencast.com/t/KQLEF0yF8E @ –

0

Ändern Sie den Monat und das Datum, um sollte Erster Monat dann Datum ... MM/DD/YYYY

var date1 = new Date("11.04.2016"); 
 
var date2 = new Date("11.19.2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
alert(diffDays);

0

A Datum besteht aus einem Jahr, einem Monat, einem Tag, einer Stunde, eine Minute, eine Sekunde und Millisekunden.

Datumsobjekte werden mit dem neuen Konstruktor Date() erstellt.

Es gibt 4 Möglichkeiten zu initiieren ein Datum:

new Date() new Date (Millisekunden) new Date (datestring) neues Datum (Jahr, Monat, Tag, Stunden, Minuten, Sekunden, Millisekunden

)

so können Sie sie geteilt und dann verwenden,

0

Ihr zweites Datum falsch ist. Parser berücksichtigt dieses Format MM.DD.YYY und Sie haben außerhalb des Bereichs Monat geliefert.

var date1 = new Date("04.11.2016"); 
 
var date2 = new Date("09.11.2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
alert(diffDays);

0

Nur die ersten beiden Zeilen ändern, wie unten

var date1 = new Date(2016,11,4); 
var date2 = new Date(2016,11,19); 
0

new date("mm dd yyyy") Format falsch war

(function() { 
 
var date1 = new Date("11 04 2016"); 
 
var date2 = new Date("11 19 2016"); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
console.log(diffDays); 
 
})()

0

JS erwartet Datum in MM-DD-YYYY und nicht DD-MM-YYYY. Ideal Weg wäre moment.js zu verwenden, aber Sie so etwas wie diese verwenden:

function createCustomDate(dateString){ 
 
    var dateArr = dateString.split(/[^0-9]/).reverse().join("-") 
 
    return new Date(dateArr); 
 
} 
 

 
var dateStr1 = "04.11.2016"; 
 
var dateStr2 = "19.11.2016"; 
 
var date1 = createCustomDate(dateStr1); 
 
var date2 = createCustomDate(dateStr2); 
 
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
 
console.log(diffDays);

+0

danke, Sie sind Hilfe –

+0

Compile-Fehler geben - http://screencast.com/t/ym9KHtWBK0 –

+0

Können Sie Fehlermeldung teilen? Im Idealfall sollte es funktionieren – Rajesh

0
new Date("19.11.2016"); 

dies Ungültiges Datum. Also ist der Unterschied NaN.

ändern Sie das Format zu mm/dd/yyyy und es wird funktionieren.

0

Sie können moment.js verwenden,

d = moment('11.16.2016') // here date format was in "MM.DD.YYYY" 
e = moment('11.04.2016') // here date format was in "MM.DD.YYYY" 
getDiffbydays = e.diff(d,'days') // get diff by days you can use day 
getDiffbyyears = e.diff(d,'year') // get diff by years you can use year 
getDiffbymonth = e.diff(d,'month') // get diff by months you can use month 
Verwandte Themen