PHP代码2023年节假日时间输出为json
<?php
$arr = [];
$year = 2023;
$month = 12;
$days = 0;
$weekarray = array("日", "一", "二", "三", "四", "五", "六");
$indexDay = 0;
$gjfj = [ //国家法定假日
'2023-01-01',
'2023-01-02',
'2023-01-21',
'2023-01-22',
'2023-01-23',
'2023-01-24',
'2023-01-25',
'2023-01-26',
'2023-01-27',
'2023-04-05',
'2023-04-29',
'2023-04-30',
'2023-05-01',
'2023-05-02',
'2023-05-03',
'2023-06-22',
'2023-06-23',
'2023-06-24',
'2023-09-29',
'2023-09-30',
'2023-10-01',
'2023-10-02',
'2023-10-03',
'2023-10-04',
'2023-10-05',
'2023-10-06'
];
$work = [ //特殊补班
'2023-01-28',
'2023-01-29',
'2023-04-23',
'2023-05-06',
'2023-06-25',
'2023-10-07',
'2023-10-08'
];
for ($i = 1; $i <= $month; $i++) {
if (in_array($i, [1, 3, 5, 7, 8, 10, 12])) { //大月
$days = 31;
} elseif ($i == 2) {
$days = 28;
} else { //小月
$days = 30;
}
for ($d = 1; $d <= $days; $d++) {
$indexDay++;
$dd = $d;
if($dd < 10){
$dd = '0'.$dd;
}
if($i >= 10){
$time = $year . '-' . $i . '-' . $dd;
}else{
$time = $year . '-0' . $i . '-' . $dd;
}
$wIndex = date("w", strtotime($time . ' 00:00:00'));
if($indexDay == 1){
$yearweek = 202252; //2022年第几周
}else{
$yearIndexWeek = strval(ceil(($indexDay-1) / 7));
if($yearIndexWeek < 10){
$yearIndexWeek = '0'.$yearIndexWeek;
}
$yearweek = '2023'.$yearIndexWeek; //2023年第几周
}
if (in_array($time, $gjfj)) {
$arr[] = [
'yearweek' => intval($yearweek),
'yearday' => $indexDay,
'holiday_today' => 1,
'holiday_legal' => 1,
'holiday_recess' => 1,
'w' => $weekarray[$wIndex],
'date' => intval(str_replace('-','',$time)),
'year' => $year,
'month' => $i
];
} elseif (in_array($weekarray[$wIndex], ['日', '六']) && !in_array($time, $work)) {
$arr[] = [
'yearweek' => intval($yearweek),
'yearday' => $indexDay,
'holiday_today' => 2,
'holiday_legal' => 2,
'holiday_recess' => 2,
'w' => $weekarray[$wIndex],
'date' => intval(str_replace('-','',$time)),
'year' => $year,
'month' => $i
];
}
}
}
//file_put_contents('holiday.json', json_encode($arr, JSON_UNESCAPED_UNICODE));
$sql = 'insert into holiday(`year`,`month`,`date`,`yearweek`,`yearday`,`holiday_today`,`holiday_legal`,`holiday_recess`,`create_time`
) values';
$createTime = date('Y-m-d H:i:s');
foreach ($arr as $val){
$sql .= "(%d,%d,%d,%d,%d,%d,%d,%d,'%s'),";
$sql = sprintf($sql,$val['year'],$val['month'] ,
$val['date'],$val['yearweek']
,$val['yearday']
,$val['holiday_today']
,$val['holiday_legal']
,$val['holiday_recess']
,$createTime
);
}
$sql = substr($sql,0,strlen($sql)-1).';';
file_put_contents('holiday.sql', $sql);