PHP создает диапазон дат

Начиная с даты в этом формате: 2011-05-01 09:00:00 , как я могу создать массив, который содержит все рабочие часы (с 09:00 до 17:00) за все рабочие дни года (так исключая все Суббота и воскресенье). Я хочу приехать в это примерно так:

 2011-05-01 09:00:00 2011-05-01 10:00:00 2011-05-01 11:00:00 2011-05-01 12:00:00 2011-05-01 13:00:00 2011-05-01 14:00:00 2011-05-01 15:00:00 2011-05-01 16:00:00 2011-05-01 17:00:00 //next day, starting at 09:00 and ending at 17:00 2011-05-02 09:00:00 ... 2011-05-02 17:00:00 //until the last day of the year from 09:00 to 17:00 2011-12-31 09:00:00 ... 2011-12-31 17:00:00 

Дата начала будет первой в текущем месяце с 09:00 по времени, а самая последняя дата (последний элемент массива) всегда будет 17:00 в последний день года.

Опять же, выходные должны быть исключены.

Идея псевдокода: я подумал о чем-то вроде strtotime($start, "+1 one hour") с проверкой на "if smaller than 17:00" но, похоже, это не так просто.