无意中发现一个节假日的 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开发节假日时间表相关推荐

  1. python 获取一年中所有工作日列表来辅助计算工作时间内的时间差

    python 获取一年中所有工作日列表来辅助计算工作时间内的时间差 思路来源 扣除一年365天(时间区间可自定义)中的节假日和周日休息日,得到工作日列表dataset,方便计算工作日与工作日之间的工作 ...

  2. python获取最近N天工作日列表、节假日列表

    # 获取最近两周工作日列表.节假日列表 import datetime import chinese_calendar import time import pandas as pd# 将时间戳转换成 ...

  3. 获取一年中的工作日期

    今天在工作中,需要手动根据新的一年的调休日期,统计输出一年中所有的工作日期. 首先想法是: 1.获取一年中的所有日期 2. 将这一年中所有的日期中,过滤掉周六日 3.然后在这些日期中去掉放假的日期 4 ...

  4. android 获取控件高度_安卓开发入门教程UI控件_ImageView

    什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...

  5. vue 后台获取数据 下拉框_Vue开发中的一些常见套路和技巧

    属性排放 管理请求加载状态 Proxy跨域 对developer和build的打包进行不同配置 大部分开发者都喜欢将Vue的config写在一个文件中,看起来是没有问题,但是随着环境的变化,项目优化, ...

  6. react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离

    前言:本系列是针对于React在界面开发痛点的一些解决方案,只是React应用中偏向展示的一环 构建一个业务与UI分离的react应用 本篇是基于HOC方案并未使用Hooks 业务逻辑与UI 在编写一 ...

  7. android 获取控件高度_安卓开发入门教程UI控件_ProgressBar

    什么是ProgressBar ProgressBar是用于提示用户进行等待的UI控件,. 基础样例 1.loading图 效果图 代码 布局文件代码 <ProgressBarandroid:id ...

  8. java获取微信的通讯录,java微信开发API第三步 微信获取以及保存接口调用凭证

    微信如何获取以及保存接口调用凭证,下面就为大家进行介绍 一.说明 *详细说明请参考前两篇文章. *本文分为三部分: 接口调用凭证access_token的作用以及解释 如何获取接口调用凭证access ...

  9. 小程序获取用户手机号_借助云开发5行代码获取小程序用户的手机号

    最近有很多同学有获取小程序用户手机号的需求.其实云开发出现之前我们获取小程序用户的手机号特别繁琐.自从有了云开发,我们获取用户手机号变得非常简单.只需要5行代码即可. 老规矩,我们先来看下效果图 再来 ...

  10. java获取微信token_Java微信公众平台开发(六)--微信开发中的token获取

    转自:http://www.cuiyongzhi.com/post/44.html (一)token的介绍 引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access ...

最新文章

  1. 最新 macOS Sierra 10.12.3 安装CocoaPods及使用详解
  2. 希尔排序(插入排序的优化算法)
  3. listen()和accept()函数:让套接字进入监听状态并响应客户端请求
  4. HDU-1241 Oil Deposits (DFS)
  5. React开发(147):开发注意
  6. 全球计算机用户人数,NIC2019年11月:全球IPv6 用户数占比中国居43位
  7. 2021年Java开发者应该学习的技术
  8. APL开发日志--2012-11-14
  9. HTML入门标签汇总
  10. CentOS 6.5安装chromium
  11. git 设置全局代理_git 代理配置
  12. webservice(草稿)
  13. PythonStock(9):使用优矿uqer.io 进行简单的数据分析
  14. 转 导入视频格式问题(QuickTime player)
  15. 机械硬盘 与 固态硬盘SSD
  16. 用the_excerpt处理中文文章字数限制的方法
  17. [渝粤教育] 西北农林科技大学 国际贸易实务 参考 资料
  18. 东风日产全新劲客首次搭载BOSE PERSONAL PLUS音响;艾比森举办秋季发布会推出多个新品 | 全球TMT...
  19. 程序人生(一)从“道·法·术·器“”的角度来谈谈程序的境界
  20. 硬件描述语言Verilog学习(三)

热门文章

  1. linux卸载kodi,如何在Ubuntu 18.04上安装Kodi
  2. Python微博评论进行情感分析
  3. 7-1 厘米换算英尺英寸
  4. 类似中国知网但是搜索英文文献的权威网站有哪些?
  5. html网页如何将文字排版,【html】文字排版
  6. OpenCV获取轮廓最大内接正矩形(C++源码)
  7. 2019314编竹筐问题
  8. android 会自动横屏再竖屏,Android横屏竖屏切换的问题
  9. txt unicode 前加 0xFF 0xFE
  10. Day_15JavaSE 异常