Files
ntonpower/extend/utils/WorkingDay.php
2026-10-14 14:00:29 +08:00

69 lines
1.4 KiB
PHP

<?php
namespace utils;
use think\facade\Db;
/**
* 获取工作日
*/
class WorkingDay
{
private $time = 0;
private $holidays = [];
public function __construct($time=0)
{
if (empty($time)) $this->time = time();
}
/**
* 获取当前年度的节假日
*/
private function getHolidays()
{
$data = Db::name('holiday')->where('year', '=', date('Y'))->column('data');
if (empty($data)) {
$this->holidays = [];
}
$this->holidays = $data;
}
/**
* 获取工作日
*/
public function getDates($adays)
{
// 获取节假日
$this->getHolidays();
// 组装工作日
$ctime = $this->time;
$days = [];
$i = 1;
while($adays>0) {
$day = strtotime("+ $i day", $ctime);
$week = date('w', $day);
// 剔除周六周日与假日
if (0 != $week && 6 != $week && !in_array(date('Y-m-d', $day), $this->holidays)) {
$adays-=1;
$days[] = date('Y-m-d H:i:s', $day);
}
$i+=1;
}
return $days;
}
/**
* 获取几个工作日后日期
*/
public function getDate($adays, $ctime = 0)
{
if (!empty($ctime)) {
$this->time = $ctime;
}
$days = $this->getDates($adays);
rsort($days);
return $days[0];
}
}