php 获取一年中的节假日,PHP开发节假日时间表
无意中发现一个节假日的 API 接口:http://timor.tech/api/holiday/year
这个接口实现起来其实很简单,而且一年只需要维护一次,想要自己实现这个接口可参考博主之前写的这篇文章 PHP判断某个日期是否为工作日
使用这个接口可以更简单快速的写一个 “节假日时间表”,例如博主写的代码:<?php
$yearPath = 'year.' . date('Y') . '.json';
$yearAPI = 'http://timor.tech/api/holiday/year';
if (!file_exists($yearPath)) {
$yearJson = file_get_contents($yearAPI);
file_put_contents($yearPath, $yearJson);
} else {
$yearJson = file_get_contents($yearPath);
}
$lstYearData = json_decode($yearJson, true);
if ($lstYearData['code'] !== 0) {
exit('发生致命问题');
}
$lstHoliday = [];
foreach ($lstYearData['holiday'] as $key => $row) {
if (!$row['holiday']) {
continue;
}
if (mb_strpos($row['name'], '初') !== false) {
$row['name'] = '大年' . $row['name'];
}
if (!isset($lstHoliday[$row['name']])) {
$lstHoliday[$row['name']] = [
'name' => $row['name'],
'wage' => $row['wage'],
'date' => [
$row['date']
],
];
} else {
$lstHoliday[$row['name']]['date'][] = $row['date'];
}
}
$lstHoliday = array_values($lstHoliday);
function getNextHoliday()
{
$nextHolidayPath = 'nextHoliday.json';
$httpGetNextHoliday = function () use($nextHolidayPath) {
$nextHolidayAPI = 'http://timor.tech/api/holiday/next';
$nextHolidayJson = file_get_contents($nextHolidayAPI);
$lstNextHoliday = json_decode($nextHolidayJson, true);
if ($lstNextHoliday['code'] !== 0) {
exit('发生致命问题');
}
file_put_contents($nextHolidayPath, json_encode([
'date' => date('Ymd'),
'data' => $nextHolidayJson
]));
return $lstNextHoliday;
};
if (!file_exists($nextHolidayPath)) {
return $httpGetNextHoliday();
}
$nextHolidayJson = file_get_contents($nextHolidayPath);
$lstNextHoliday = json_decode($nextHolidayJson, true);
if ($lstNextHoliday['date'] !== date('Ymd')) {
return $httpGetNextHoliday();
}
return json_decode($lstNextHoliday['data'], true);
}
$lstNextHoliday = getNextHoliday();
?>
html>
节假日放假时间表 - 不败君
.cool {
background: #f2f2f2;
}
.name_type {
margin: 20px 0px;
}
.title {
text-align: center;
border-bottom: 1px solid #ddd;
box-shadow: 0 0 7px 0 #ababab;
padding: 20px 0px;
}
.title a{
color: #000;
text-decoration: none;
}
<?php echo date('Y')?>年节假日时间表
foreach ($lstHoliday as $key => $row) {
?>
工资倍数:<?php echo $row['wage']?> 倍
放假时间
foreach ($row['date'] as $date) {
?>
下一个节假日
工资倍数: <?php echo $lstNextHoliday['holiday']['wage']?> 倍
放假起始日:<?php echo $lstNextHoliday['holiday']['date']?>
本文最后实现的效果: 节假日时间表
如果有兴趣还可以根据接口返回的数据,计算下一个节假日。
另外,博主之前还写过类似的文章:
php 获取一年中的节假日,PHP开发节假日时间表相关推荐
- python 获取一年中所有工作日列表来辅助计算工作时间内的时间差
python 获取一年中所有工作日列表来辅助计算工作时间内的时间差 思路来源 扣除一年365天(时间区间可自定义)中的节假日和周日休息日,得到工作日列表dataset,方便计算工作日与工作日之间的工作 ...
- python获取最近N天工作日列表、节假日列表
# 获取最近两周工作日列表.节假日列表 import datetime import chinese_calendar import time import pandas as pd# 将时间戳转换成 ...
- 获取一年中的工作日期
今天在工作中,需要手动根据新的一年的调休日期,统计输出一年中所有的工作日期. 首先想法是: 1.获取一年中的所有日期 2. 将这一年中所有的日期中,过滤掉周六日 3.然后在这些日期中去掉放假的日期 4 ...
- android 获取控件高度_安卓开发入门教程UI控件_ImageView
什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...
- vue 后台获取数据 下拉框_Vue开发中的一些常见套路和技巧
属性排放 管理请求加载状态 Proxy跨域 对developer和build的打包进行不同配置 大部分开发者都喜欢将Vue的config写在一个文件中,看起来是没有问题,但是随着环境的变化,项目优化, ...
- react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离
前言:本系列是针对于React在界面开发痛点的一些解决方案,只是React应用中偏向展示的一环 构建一个业务与UI分离的react应用 本篇是基于HOC方案并未使用Hooks 业务逻辑与UI 在编写一 ...
- android 获取控件高度_安卓开发入门教程UI控件_ProgressBar
什么是ProgressBar ProgressBar是用于提示用户进行等待的UI控件,. 基础样例 1.loading图 效果图 代码 布局文件代码 <ProgressBarandroid:id ...
- java获取微信的通讯录,java微信开发API第三步 微信获取以及保存接口调用凭证
微信如何获取以及保存接口调用凭证,下面就为大家进行介绍 一.说明 *详细说明请参考前两篇文章. *本文分为三部分: 接口调用凭证access_token的作用以及解释 如何获取接口调用凭证access ...
- 小程序获取用户手机号_借助云开发5行代码获取小程序用户的手机号
最近有很多同学有获取小程序用户手机号的需求.其实云开发出现之前我们获取小程序用户的手机号特别繁琐.自从有了云开发,我们获取用户手机号变得非常简单.只需要5行代码即可. 老规矩,我们先来看下效果图 再来 ...
- java获取微信token_Java微信公众平台开发(六)--微信开发中的token获取
转自:http://www.cuiyongzhi.com/post/44.html (一)token的介绍 引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access ...
最新文章
- 最新 macOS Sierra 10.12.3 安装CocoaPods及使用详解
- 希尔排序(插入排序的优化算法)
- listen()和accept()函数:让套接字进入监听状态并响应客户端请求
- HDU-1241 Oil Deposits (DFS)
- React开发(147):开发注意
- 全球计算机用户人数,NIC2019年11月:全球IPv6 用户数占比中国居43位
- 2021年Java开发者应该学习的技术
- APL开发日志--2012-11-14
- HTML入门标签汇总
- CentOS 6.5安装chromium
- git 设置全局代理_git 代理配置
- webservice(草稿)
- PythonStock(9):使用优矿uqer.io 进行简单的数据分析
- 转 导入视频格式问题(QuickTime player)
- 机械硬盘 与 固态硬盘SSD
- 用the_excerpt处理中文文章字数限制的方法
- [渝粤教育] 西北农林科技大学 国际贸易实务 参考 资料
- 东风日产全新劲客首次搭载BOSE PERSONAL PLUS音响;艾比森举办秋季发布会推出多个新品 | 全球TMT...
- 程序人生(一)从“道·法·术·器“”的角度来谈谈程序的境界
- 硬件描述语言Verilog学习(三)