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;
     }
 }