Comment créer une fonction qui peut renvoyer la différence de date en javascript?

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

  •  23-09-2019
  •  | 
  •  

Question

j'ai créé ci-dessous fonction pour obtenir la différence de date entre deux dates .. plaidoyers vérifier ce que son correct ainsi que la façon de ne pas trouver du mois (multiplier par 30 ou 31?) Et l'année ..

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)

}

Était-ce utile?

La solution

Si votre application va nécessiter beaucoup de méthodes de manipulation de date, vous voudrez peut-être envisager d'utiliser quelque chose comme le Datejs bibliothèque .

Si vous incluez time.js de la bibliothèque Datejs, vous seriez en mesure de faire ce qui suit:

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

var span = new TimeSpan(future - now);

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

Le script time.js est facultative et ne sont pas inclus dans les compilé / build / versions. Vous pouvez le télécharger directement à partir du dépôt SVN .

Autres conseils

Vous devez transformer en jours après avoir fait la différence pas avant. Comme:

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');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top