php实现获取N个工作日后日期
/*
*获取法定工作日后日期
*$time,某个时间戳
*$days,多少个工作日
*return,日期
*/
function getdate($time,$days){
$num=0;
while($num<$days) {
$time=$time+86400;
$day=date('Ymd',$time);
$isworkday=$this->getIsWorkingDay($day);
if($isworkday==true){
$num++;
}
}
return date('Y-m-d',$time);
}
/*
返回 false 非工作日 true 工作日
@param string $target_day
@return bool
**/
function getIsWorkingDay($target_day)
{
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 年中秋和国庆同样 所以国庆的可以省略)
'20210101' => '', // 元旦
'20210211' => '20210217', // 春节
'20210403' => '20210405', // 清明节
'20210501' => '20210505', // 劳动节
'20210612' => '20210614', // 端午节
'20210919' => '20210921', // 中秋
'20211001' => '20211007', // 国庆 (由于 2020 年中秋和国庆同样 所以国庆的可以省略)
];
// 特殊的工作日 (传统节日前后补班)
$lst_working_day = [
'20200119' => '', // 春节
'20200426' => '', // 劳动节
'20200509' => '', // 劳动节
'20200628' => '', // 端午节
'20200927' => '', // 中秋 / 国庆
'20201010' => '', // 中秋 / 国庆
'20210207' => '', // 春节
'20210220' => '', // 春节
'20210425' => '', // 劳动节
'20210508' => '', // 劳动节
'20210918' => '', // 中秋
'20210926' => '', // 国庆
'20211009' => '', // 国庆
];
// 遍历数组 获取今天是否为假日
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;
}
调用获取工作日方法:this−>getdate(this->getdate(this−>getdate(time=time(),$days=15);
本文介绍了如何在PHP中实现计算未来N个工作日的日期,通过调用特定的方法getdate()并传入当前时间和天数参数。

3386

被折叠的 条评论
为什么被折叠?



