init: 项目初始代码
This commit is contained in:
68
extend/utils/WorkingDay.php
Normal file
68
extend/utils/WorkingDay.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?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];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user