# How to calculate number of days between two dates

## How to calculate number of days between two dates

I have two input dates taking from Date Picker control. I have selected start date 2/2/2012 and end date 2/7/2012. I have written following code for that.
I should get result as 6 but I am getting 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);
}

Can anyone tell me how I can get exact difference?

### Solution 1:

From Moment docs:

``````var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days')   // =1
``````

or to include the start:

``````a.diff(b, 'days')+1   // =2
``````

Beats messing with timestamps and time zones manually.

Depending on your specific use case, you can either

1. Use `a/b.startOf('day')` and/or `a/b.endOf('day')` to force the diff to be inclusive or exclusive at the “ends” (as suggested by @kotpal in the comments).
2. Set third argument `true` to get a floating point diff which you can then `Math.floor`, `Math.ceil` or `Math.round` as needed.
3. Option 2 can also be accomplished by getting `'seconds'` instead of `'days'` and then dividing by `24*60*60`.

### Solution 2:

If you are using moment.js you can do it easily.

Related:  Why does console.log.apply() throw an Illegal Invocation error? [duplicate]
``````var start = moment("2018-03-10", "YYYY-MM-DD");
var end = moment("2018-03-15", "YYYY-MM-DD");

//Difference in number of days
moment.duration(start.diff(end)).asDays();

//Difference in number of weeks
moment.duration(start.diff(end)).asWeeks();
``````

If you want to find difference between a given date and current date in number of days (ignoring time), make sure to remove time from moment object of current date as below

``````moment().startOf('day')
``````

To find difference between a given date and current date in number of days

``````var given = moment("2018-03-10", "YYYY-MM-DD");
var current = moment().startOf('day');

//Difference in number of days
moment.duration(given.diff(current)).asDays();
``````

### Solution 3:

Try:

``````//Difference in days

var diff =  Math.floor(( start - end ) / 86400000);