/** * 求某月/某年的工作日 * @param array $search 搜索类型 * @param array $other_day 寒暑假和过节 * @return array 工作日 */ function get_workday($search = array(), $other_day = array()) { //获取搜索的所有天数 //获取某月中每天 if (isset($search[‘month‘])) { if ((int)$search[‘month‘] < 1 || (int)$search[‘month‘] > 12) { return false; } //转换为时间戳 $start_date = strtotime($search[‘year‘].‘-‘.$search[‘month‘].‘-01‘); //判断是否求最后一个月 if ((int)$search[‘month‘] == 12) { $end_date = strtotime(($search[‘year‘]+1).‘-01-01‘); } else { $end_date = strtotime($search[‘year‘].‘-‘.($search[‘month‘]+1).‘-01‘); } } //获取某年中每天 elseif(isset($search[‘year‘])) { $start_date = strtotime($search[‘year‘].‘-01-01‘); $end_date = strtotime(($search[‘year‘]+1).‘-01-01‘); } $each_date = $start_date; while($each_date < $end_date) { $dates[] = $each_date; $each_date = strtotime(‘+1 day‘, $each_date); //或者 $each_date += $each_date+86400; } echo count($dates)."\n"; // 1.排除周六周日 $n = 0; foreach ($dates as $key => $timestamp) { $date_w = date(‘w‘, $timestamp); if ($date_w == 0 || $date_w == 6) { unset($dates[$key]); } $n++; } echo count($dates)."\n"; // 2.排除节假日,过节 $dates = array_diff($dates, $other_day); return $dates; } $search1 = array( ‘year‘ => ‘2015‘, ); $search2 = array( ‘year‘ => ‘2014‘, ‘month‘ => ‘12‘ ); get_workday($search2);exit;
时间: 2024-11-07 01:05:10