См. http://php.net/manual/en/function.cal-days-in-month.php
$num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
и будние дни:
$weekday = date("l", mktime(0,0,0,$month,$day,$year));
$print ($weekday);
Последнее не очень эффективно, но выглядит лучше, чем использование getdate:
$my_t=getdate(date("U"));
print("$my_t[weekday], $my_t[month] $my_t[mday], $my_t[year]");
Вывод как
Wednesday, September 29, 2011