Comment calculer le nombre de jours entre deux dates? [dupliquer]

cette question a déjà une réponse ici:

  1. Je calcule le nombre de jours entre la date " du "et la date "jusqu'au". Par exemple, si la date est 13/04/2010 et la date est 15/04/2010 le résultat doit être

  2. Comment obtenir le résultat en utilisant JavaScript?

210
demandé sur Paolo Forgia 2010-04-13 10:37:51
la source

7 ответов

var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(2008,01,12);
var secondDate = new Date(2008,01,22);

var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
420
répondu MaxVT 2018-03-11 00:20:17
la source

Voici une fonction qui fait ceci:

function days_between(date1, date2) {

    // The number of milliseconds in one day
    var ONE_DAY = 1000 * 60 * 60 * 24;

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

}
30
répondu Darin Dimitrov 2018-09-17 09:26:55
la source

voilà ce que j'utilise. Si vous soustrayez simplement les dates, cela ne fonctionnera pas au-delà de L'heure avancée (par exemple du 1er avril au 30 avril ou du 1er octobre au 31 octobre). Cela diminue toutes les heures pour s'assurer que vous obtenez une journée et élimine tout problème DST en utilisant UTC.

var nDays = (    Date.UTC(EndDate.getFullYear(), EndDate.getMonth(), EndDate.getDate()) -
                 Date.UTC(StartDate.getFullYear(), StartDate.getMonth(), StartDate.getDate())) / 86400000;
14
répondu rmcmullan 2017-04-26 22:05:28
la source

ajusté pour tenir compte des différences de luminosité. essayez ceci:

  function daysBetween(date1, date2) {

 // adjust diff for for daylight savings
 var hoursToAdjust = Math.abs(date1.getTimezoneOffset() /60) - Math.abs(date2.getTimezoneOffset() /60);
 // apply the tz offset
 date2.addHours(hoursToAdjust); 

    // The number of milliseconds in one day
    var ONE_DAY = 1000 * 60 * 60 * 24

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

}

// you'll want this addHours function too 

Date.prototype.addHours= function(h){
    this.setHours(this.getHours()+h);
    return this;
}
8
répondu Damen TheSifter 2010-09-03 04:36:21
la source

Voici mon implémentation:

function daysBetween(one, another) {
  return Math.round(Math.abs((+one) - (+another))/8.64e7);
}

+<date> fait la coercition de type à la représentation entière et a le même effet que <date>.getTime() et 8.64e7 est le nombre de millisecondes dans une journée.

8
répondu Andrei Borisovich 2014-04-25 11:35:14
la source

j'ai écrit Cette solution pour un autre post qui a demandé, comment calculer la différence entre deux dates, donc je partage ce que j'ai préparé:

// Here are the two dates to compare
var date1 = '2011-12-24';
var date2 = '2012-01-01';

// First we split the values to arrays date1[0] is the year, [1] the month and [2] the day
date1 = date1.split('-');
date2 = date2.split('-');

// Now we convert the array to a Date object, which has several helpful methods
date1 = new Date(date1[0], date1[1], date1[2]);
date2 = new Date(date2[0], date2[1], date2[2]);

// We use the getTime() method and get the unixtime (in milliseconds, but we want seconds, therefore we divide it through 1000)
date1_unixtime = parseInt(date1.getTime() / 1000);
date2_unixtime = parseInt(date2.getTime() / 1000);

// This is the calculated difference in seconds
var timeDifference = date2_unixtime - date1_unixtime;

// in Hours
var timeDifferenceInHours = timeDifference / 60 / 60;

// and finaly, in days :)
var timeDifferenceInDays = timeDifferenceInHours  / 24;

alert(timeDifferenceInDays);

Vous pouvez sauter certaines étapes dans le code, je l'ai écrit afin de le rendre facile à comprendre.

vous trouverez un exemple d'exécution ici: http://jsfiddle.net/matKX /

7
répondu Armin 2011-12-23 23:41:26
la source

de mon petit calculateur de différence de date:

var startDate = new Date(2000, 1-1, 1);  // 2000-01-01
var endDate =   new Date();              // Today

// Calculate the difference of two dates in total days
function diffDays(d1, d2)
{
  var ndays;
  var tv1 = d1.valueOf();  // msec since 1970
  var tv2 = d2.valueOf();

  ndays = (tv2 - tv1) / 1000 / 86400;
  ndays = Math.round(ndays - 0.5);
  return ndays;
}

pour que vous appeliez:

var nDays = diffDays(startDate, endDate);

(source complète à http://david.tribble.com/src/javascript/jstimespan.html .)

Addendum

le code peut être amélioré en changeant ces lignes:

  var tv1 = d1.getTime();  // msec since 1970
  var tv2 = d2.getTime();
0
répondu David R Tribble 2015-06-05 18:30:44
la source

Autres questions sur javascript html date