398 votes

Comment calculer le nombre de jours entre deux dates

J'ai deux dates d'entrée provenant du contrôle Date Picker. J'ai sélectionné la date de début 2/2/2012 et la date de fin 2/7/2012. J'ai écrit le code suivant pour cela.

Je devrais obtenir un résultat de 6 mais j'obtiens 5.

function SetDays(invoker) {   
    var start = $find('<%=StartWebDatePicker.ClientID%>').get_value();
    var end = $find('<%=EndWebDatePicker.ClientID%>').get_value();

    var oneDay=1000 * 60 * 60 * 24;
    var difference_ms = Math.abs(end.getTime() - start.getTime())
    var diffValue = Math.round(difference_ms / oneDay);
}

Quelqu'un peut-il me dire comment obtenir la différence exacte ?

0 votes

Pourquoi obtenir le résultat = 6 ? ?? 07 - 02 = 05 jours....

1 votes

Mais l'intervalle de jours de 2 à 7 est de 2,3,4,5,6,7 = 6 jours.

0 votes

En prenant la différence, je veux considérer la date de début aussi.....

5voto

Philippe Makzoume Points 107

J'ai fait une fonction rapide réutilisable en ES6 en utilisant Moment.js.

const getDaysDiff = (start_date, end_date, date_format = 'YYYY-MM-DD') => {
  const getDateAsArray = (date) => {
    return moment(date.split(/\D+/), date_format);
  }
  return getDateAsArray(end_date).diff(getDateAsArray(start_date), 'days') + 1;
}

console.log(getDaysDiff('2019-10-01', '2019-10-30'));
console.log(getDaysDiff('2019/10/01', '2019/10/30'));
console.log(getDaysDiff('2019.10-01', '2019.10 30'));
console.log(getDaysDiff('2019 10 01', '2019 10 30'));
console.log(getDaysDiff('+++++2019!!/###10/$$01', '2019-10-30'));
console.log(getDaysDiff('2019-10-01-2019', '2019-10-30'));
console.log(getDaysDiff('10-01-2019', '10-30-2019', 'MM-DD-YYYY'));

console.log(getDaysDiff('10-01-2019', '10-30-2019'));
console.log(getDaysDiff('10-01-2019', '2019-10-30', 'MM-DD-YYYY'));

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>

4voto

David Points 307

Vous pouvez également utiliser ce code : moment("yourDateHere", "YYYY-MM-DD").fromNow(). Cela calculera la différence entre aujourd'hui et la date que vous avez fournie.

0voto

mocy Points 11
// today
const date = new Date();

// tomorrow
const nextDay = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);

// Difference in time
const Difference_In_Time = nextDay.getTime() - date.getTime();

// Difference in Days 
const Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);

-1voto

Aladein Points 26

MVC J'ai deux textes d'entrée 1 : le nombre de jours 2 : sélecteur de date

 @Html.TextBox("HeaderINVID", null, new { @id = "HeaderINVID", @type = "number", @class = "form-control", autocomplete = "off", placeholder = "Day Count " })

  @Html.TextBox("HeaderINVDT", null, new { id = "HeaderINVDT", @class = "form-control format-picker", autocomplete = "off", placeholder = " Date" })

javascipt

pour calculer un nombre à partir d'une date, utilisez

    $("#HeaderINVID").bind("keyup", function (e) {
        var INVID = $("#HeaderINVID").val();
        var date = moment()
            .add(INVID, 'd')
            .toDate(); 
        $("#HeaderINVDT").val(moment(date).format('YYYY-MM-DD')) ;
    })

pour calculer le nombre de jours entre deux dates, utilisez

  $("#HeaderINVDT").bind('change', function (e) {
        var StDT = moment($("#HeaderINVDT").val()).startOf('day');
        var NODT = moment().startOf('day');
        $("#HeaderINVID").val(StDT.diff(NODT, 'days'));
    })

n'oubliez pas d'ajouter http://momentjs.com/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X