需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的。可惜的是,这样的接口并不多,在此汇总三个:

前两个看起来是个人的,最后一个是聚合数据的万年历接口。

在我的小项目中使用了前两个。感觉个人的搭建可能不会太稳定,但是聚合的api我看限制越来越多,每天只能进行100次调用。

附送一段小项目中的代码,使用curl获取前两项接口和Thinkphp5的缓存机制,判断当前日期是否为节假日的函数。

PHP
function isHoliday()
{
$today = date('Ymd');

if (cache($today) !== false) {
return cache($today);
} else {
$api1 = juhecurl('http://tool.bitefu.net/jiari/?d='.$today);
if (is_numeric($api1)) {
cache($today, $api1, 86400);
return cache($today);
} else {
$api2 = json_decode(juhecurl('http://www.easybots.cn/api/holiday.php?d='.$today));
if (is_numeric($api2)) {
cache($today, $api2->$today, 86400);
return cache($today);
} else {
return -1;
}
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function isHoliday()
{
    $today = date('Ymd');
 
    if (cache($today) !== false) {
        return cache($today);
    } else {
        $api1 = juhecurl('http://tool.bitefu.net/jiari/?d='.$today);
        if (is_numeric($api1)) {
            cache($today, $api1, 86400);
            return cache($today);
        } else {
            $api2 = json_decode(juhecurl('http://www.easybots.cn/api/holiday.php?d='.$today));
            if (is_numeric($api2)) {
                cache($today, $api2->$today, 86400);
                return cache($today);
            } else {
                return -1;
            }
        }
    }
}

以上代码中cache()缓存助手函数是thinkphp5自带,juhecurl()是一段curl访问函数,仅供参考,不能直接转移到其他项目中。

由于两个接口的返回结果是较为统一的,工作日为0,休息日1,节假日2。所以没有做详细判断,都取不到结果则返回-1。

由于两个接口都不像太规范,建议在使用的时候,先看一下是否还可用。如果能考虑一定预算的话,推荐使用聚合接口稳定点。

判断日期是否为法定节假日的API接口与示例函数的更多相关文章

  1. PHP 判断当前日期是否是法定节假日或者休息日 (原)

    //判断日期是不是节假日或者双休日接口 @param time [时间(时间戳或者Y-m-d都可)] public function get_type_by_date(){ $t = $_GET['t ...

  2. PHP 判断当前日期是否是法定节假日或者休息日

    1.代码如下 $date = date("Ymd",time()); $url = "http://api.goseek.cn/Tools/holiday?date=&q ...

  3. JAVA的免费天气api接口调用示例

    step1:选择本文所示例的接口"免费天气api" url:https://www.juhe.cn/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参 ...

  4. 03: zabbix API接口 对 主机、主机组、模板、应用集、监控项、触发器等增删改查

    目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...

  5. 调用免费API查询全年工作日、周末、法定节假日、节假日调休补班数据

    前言 日常开发中,难免会用到判断今天是工作日.周末.法定节假日.节假日调休补班做一些业务处理,例如:仅在上班时间给用户推送消息.本文记录调用免费API查询全年工作日.周末.法定节假日.节假日调休补班数 ...

  6. java 判断日期是否是节假日

    1.新建一个excel命名为“节假日.xls”存放节假日,模板格式如下 2.判断是否是节假日的类 工作日返回true ,休息日返回false. 需要引用poi-bin-3.9包,包放在博客文件中 im ...

  7. Python-获取法定节假日

    获取公共节假日的接口,http://www.easybots.cn/holiday_api.net, 具体代码如下: # -*- coding:utf-8 -*- import json import ...

  8. C#实现工作日和休息日(包括法定节假日)的计算

    转自:http://www.cnblogs.com/yuan-chong/p/HolidayHelper.html 一.开发背景: 最近在公司开发的系统中,需要计算工作日,就是给出一个采购周期(n天) ...

  9. java 查询指定月份的工作日(不包括法定节假日)

    /** * 日期工具类 用于获取指定月份的工作日(除去周末和法定节假日) */ public class DateUtils { public static void main(String[] ar ...

随机推荐

  1. 你真的了解Mybatis的${}和#{}吗?是否了解应用场景?

    转自:https://www.cnblogs.com/mytzq/p/9321526.html 动态sql是mybatis的主要特性之一.在mapper中定义的参数传到xml中之后,在查询之前myba ...

  2. ccflow关于流程引擎的父子流程的基本概念

    关键字:驰骋BPM jflow,ccflow, 驰骋工作流引擎 父子流程概念:在管理活动中,通用的部分,公用的部分,可以被重复执行的部分的流程管理活动我们把他独立出来,成为子流程,可以被其他流程的管理 ...

  3. BZOJ3170 [Tjoi2013]松鼠聚会 切比雪夫距离 - 曼哈顿距离 - 前缀和

    BZOJ3170 题意: 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最 ...

  4. 不修改的主席(HJT)树-HDU2665,POJ-2104;

    参考:优秀的B站视频:   和 https://blog.csdn.net/creatorx/article/details/75446472 感觉主席树这个思路是真的优秀,每次在前一次的线段树的基础 ...

  5. CF1027D Mouse Hunt 思维

    Mouse Hunt time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  6. CF981B Businessmen Problems map 模拟 二十二

    Businessmen Problems time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  7. Java开发必备工具 ------------工欲善其事,必先利其器

    java企业级开发基本工具 一.开发必备工具 1.Java开发环境 JDK (官网下载即可,需要注册账户) JRE 2.Java企业编码开发工具 IntelliJ IDEA(建议使用Idea,插件使用 ...

  8. 可见性有序性,Happens-before来搞定

    写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO 的 ...

  9. DOM的预习

    HTML DOM 将 HTML 文档视作树结构.这种结构被称为节点树: 一些常用的 HTML DOM 方法: getElementById(id) - 获取带有指定 id 的节点(元素) append ...

  10. python实现经典算法

    1,快速排序 题目形式:手写一下快速排序算法. 题目难度:中等. 出现概率:约50%.手写快排绝对是手撕代码面试题中的百兽之王,掌握了它就是送分题,没有掌握它就是送命题. 参考代码: def quic ...