Wie eine Funktion erstellen, die Datumsdifferenz in Javascript zurückkehren kann?

StackOverflow https://stackoverflow.com/questions/2146127

  •  23-09-2019
  •  | 
  •  

Frage

Ich habe unten Funktion zu erhalten Datum Differenz zwischen zwei Daten erstellt .. Bitten überprüfen, dass die korrekten und wie keine von Monat zu finden (multiplizieren mit 30 oder 31?) Und Jahr ..

function days_between(date1, date2,datepart) {

// The number of milliseconds in one day
 var ONE_DAY=0;
 if ( datepart === undefined ) {
  datepart = 'D';
}

 if(datepart='Y')
 {     
 ONE_DAY = 1000 * 60 * 60 * 24 * 30 *12
 }
 else if (datepart='M')
 {
 ONE_DAY = 1000 * 60 * 60 * 24 * 30
 }
 else
 {
 ONE_DAY = 1000 * 60 * 60 * 24   //for day
 }

// 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)

}

War es hilfreich?

Lösung

Wenn Ihre Anwendung eine Menge Datum Manipulationsmethoden erfordern wird, können Sie etwas verwenden wie die Datejs berücksichtigen wollen Bibliothek.

Wenn Sie time.js aus der Datejs Bibliothek enthalten, würden Sie in der Lage sein, folgendes zu tun:

var future = new Date().add({months: 5}); 
var now = new Date();

var span = new TimeSpan(future - now);

console.log("Days: ", span.getDays());

Das time.js Skript ist optional und wird nicht in den kompilierten / build / Versionen enthalten. Sie können es direkt aus dem Download SVN-Repository .

Andere Tipps

Sie sollten, nachdem Sie den Unterschied nicht vor in Tagen verwandeln. Wie:

var d1 = new Date().getTime(),
d2 = new Date(2010, 11, 31).getTime();
alert(Math.round((d2-d1)/24/60/60/1000) + ' days left for 2010');
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top