This question already has an answer here:

- How do I get the number of days between two dates in JavaScript? 28 answers

I have two arbitrary dates, lets say April 1st 2012 and January 15th 2013. I want to calculate the number of Sundays, Mondays, Tuesdays, Wednesdays, Thursdays, Fridays, and Saturdays between those two dates.

Is there a surefire-quick way to do this without crippling the users CPU/browser?

Thanks

**Update**

The premise of this is, we have a defined average number of events for any given day of the week. We need to calculate the number of events to happen in a time period, even for partials (like 1/2 day of Sunday would be half the number of events added to total)

Ok, here is a possible untested solution

```
date1 = new Date("2012-02-10");
date2 = new Date("2012-03-10");
daysInBetween = (date2.getTime() - date1.getTime())/1000/3600/24;
dayOfTheWeek1 = date1.getDay();
weeks = parseInt(daysInBetween/7, 10);
extraDays = daysInBetween%7;
```

You have `weeks + 1`

days of `dayOfWeek1 ... dayOfWeek1 + (6 - extraDays)`

You have `weeks + 1 + extraDays`

days of `dayOfWeek1 + (6 - extraDays) ... dayOfWeek1 + 6`

Please take into acount that if `dayOfWeek1 === 6`

then I am assuming that `dayOfWeek1 + 1 === 0`

.

EDIT:

A little bit more of code:

```
var days = {};
var dayOfTheWeekEnd = dayOfTheWeek1 + 6 - extraDays; // no imagination for names...
if (dayOfTheWeekEnd < 6) {
if (0 >= dayOfTheWeek1 && 0 <= dayOfTheWeekEnd) {
days.sunday = weeks + 1;
} else {
days.sunday = weeks + 1 + extraDays;
}
// etc for the other days, a for loog with an i instead of the 0 would be better.
} else {
// I have to go the school! I'll edit it later.
// The idea is that you have to take dayOfTheWeekEnd back to the 0-6 range
// and check if its after dayOfWeek1 or before dayOfTheWeekEnd, then days.sunday=weeks+1.
}
```