public static function parseMonthYear($month, $year) { $cal_info = cal_info(CAL_GREGORIAN); if (is_string($month)) { // first check full month names $month_number = DateRange::array_nsearch($month, $cal_info['months']); // if that doesn't work, check abbreviations if ($month_number === false) { $month_number = DateRange::array_nsearch($month, $cal_info['abbrevmonths']); } } else { $month_number = is_int($month) && $month >= 1 && $month <= 12 ? $month : false; } if ($month_number !== false) { $month_days = cal_days_in_month(CAL_GREGORIAN, $month_number, $year); $startDate = mktime(0, 0, 0, $month_number, 1, $year); $endDate = mktime(0, 0, 0, $month_number, $month_days, $year); return new DateRange($startDate, $endDate); } else { return null; } }