Help me manage my time I have been recently told to read an entire physics textbook by the new year (true story, unfortunately). I need your help to determine what chapters I should read each day. This is where you come in.
Input

Two dates, in any format. The second date will always be later than the first.
A list of chapter numbers. This comma-separated list can contain single chapters (12) or inclusive ranges (1-3). Ex. 1-3,5,6,10-13.
A list of weekdays (represented by the first two letters of the name: Monday -&gt; Mo) to exclude from the schedule. Ex. Mo,Tu,Fr.

Output
Output will be a newline-separated list of dates and chapter numbers (see format below). The chapters should be evenly distributed over all days in the range, excluding the weekdays provided. If the chapters do not distribute evenly, have the days with lower amounts of chapters at the end of the period of time. Dates in output can be in a different format than input. Days with no chapters can be ommited, or just have no chapters with it.
Example:
Input: 9/17/2015 9/27/2015 1-15 Tu
Output:
9/17/2015: 1 2
9/18/2015: 3 4
9/19/2015: 5 6
9/20/2015: 7 8
9/21/2015: 9 10
9/23/2015: 11
9/24/2015: 12
9/25/2015: 13
9/26/2015: 14
9/27/2015: 15
JavaScript (ES6), 317 310 291 bytes

(a,b,c,d)=&gt;{u=0;c.split`,`.map(m=&gt;{p=m[s]`-`;for(q=n=p[0];n&lt;=(p[1]||q);r=++u)c+=","+n++},c="");c=c.split`,`;x=d.map(p=&gt;"SuMoTuWeThFrSa".search(p)/2);for(g=[];a&lt;b;a.setTime(+a+864e5))x.indexOf(a.getDay())&lt;0&amp;&amp;(t=y=g.push(a+" "));return g.map(w=&gt;w+c.slice(u-r+1,u-(r-=r/y--+.99|0)+1)).join`
`}


Usage

f(new Date("2015-09-17"),new Date("2015-09-27"),"5,1-4,6,10-13,20-27",["Su","Tu"])
=&gt; "Thu Sep 17 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 5,1,2
Fri Sep 18 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 3,4,6
Sat Sep 19 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 10,11
Mon Sep 21 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 12,13
Wed Sep 23 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 20,21
Thu Sep 24 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 22,23
Fri Sep 25 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 24,25
Sat Sep 26 2015 10:00:00 GMT+1000 (AUS Eastern Standard Time) 26,27"


Explanation

(a,b,c,d)=&gt;{

  u=0;                                                 // u = total chapters
  c.split`,`.map(m=&gt;{                                  // c = array of each chapter
    p=m[s]`-`;
    for(q=n=p[0];n&lt;=(p[1]||q);r=++u)                   // get each chapter from ranges
      c+=","+n++
  },c="");
  c=c.split`,`;

  x=d.map(p=&gt;"SuMoTuWeThFrSa".search(p)/2);            // x = days to skip
  for(g=[];a&lt;b;a.setTime(+a+864e5))                    // for each day between a and b
    x.indexOf(a.getDay())&lt;0&amp;&amp;                          // if this day is not skipped
      (t=y=g.push(a+" "));                             // add it to the list of days
                                                       // t = total days
                                                       // y = days remaining

  return g.map(w=&gt;w+
    c.slice(u-r+1,u-(r-=r/y--+.99|0)+1)                // add the chapters of the day
  ).join`
`
}