2020-10-28 12:03:07
围观(6130)
PHP 判断日期是否为周六日很简单,如获取今天是周几:
date('w');
如果返回了 0 或者 6 就是周日和周六,获取指定日期是周几可以这样:
date('w', '20201028');
当然本文没那么简单,因为本文要获取的是“工作日”而不是周六日。
因为每年都有一些传统节日,而且这些传统节日每年的日期都不一样,国家给的节假日安排也不一样。
所以先要获取国家安排的节假日(可以直接百度搜:2020节假日安排): http://www.gov.cn/zhengce/content/2019-11/21/content_5454164.htm
接着就是将这些日期进行排列并进行判断,例如博主写的这样的方法:
/* 返回 false 非工作日 true 工作日 @param string $target_day @return bool **/ function getIsWorkingDay(string $target_day) : bool { if (!strtotime($target_day) || mb_strlen($target_day) !== 8) { return false; } // 特殊的假日 (传统节日放假) $lst_holiday = [ '20200101' => '', // 元旦 '20200124' => '20200202', // 春节 '20200404' => '20200406', // 清明节 '20200501' => '20200505', // 劳动节 '20200625' => '20200627', // 端午节 '20201001' => '20201008', // 中秋 '20201001' => '20201008', // 国庆 (由于 2020 年中秋和国庆同样 所以国庆的可以省略) ]; // 特殊的工作日 (传统节日前后补班) $lst_working_day = [ '20200119' => '', // 春节 '20200426' => '', // 劳动节 '20200509' => '', // 劳动节 '20200628' => '', // 端午节 '20200927' => '', // 中秋 / 国庆 '20201010' => '', // 中秋 / 国庆 ]; // 遍历数组 获取今天是否为假日 foreach ($lst_holiday as $holiday_key => $holiday_value) { if ($holiday_key == $target_day) { return false; } if ($holiday_key > $target_day) { if (!empty($holiday_value) && $holiday_value <= $target_day) { return false; } } } // 遍历数组 获取今天是否为工作日 foreach ($lst_working_day as $working_key => $working_value) { if ($working_key == $target_day) { return true; } if ($working_key > $target_day) { if (!empty($working_value) && $working_value <= $target_day) { // var_dump(2); return true; } } } // 最后执行到这里 说明当前日期并非特殊节假日或需要补班的时间 $week = date('w', strtotime($target_day)); if (!$week || $week == 6) { // var_dump(3); return false; } // var_dump(4); return true; } // 假设时间输入不对 var_dump(getIsWorkingDay('bubaijun_com')); // 返回 false var_dump(getIsWorkingDay(date('Ymd'))); // 返回 true 是工作日 var_dump(getIsWorkingDay('20201031')); // 返回 false 非工作日 var_dump(getIsWorkingDay('20200101')); // 返回 false 特殊节假日 var_dump(getIsWorkingDay('20201001')); // 返回 false 特殊节假日 var_dump(getIsWorkingDay('20201010')); // 返回 true 国庆中秋补班 var_dump(getIsWorkingDay('20200927')); // 返回 true 国庆中秋补班
复制上面的代码就能实现判断某个指定日期是否为工作日了。
缺点就是每年知道节假日安排之后都要进行数据修改。
本文地址 : bubaijun.com/page.php?id=218
版权声明 : 未经允许禁止转载!
上一篇文章: PHP+NodeJs后端给网站截图
下一篇文章: 安装GO并体验了一下Beego框架