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

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

在我的小项目中使用了前两个。感觉个人的搭建可能不会太稳定,但是聚合的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. asio kcp源码分析

    asio kcp代码走读 (1)kcp_client_wrap类 a 提供方法接口如下: send_msg kcp_client_.send_msg(msg); stop //等待工作线程退出 set ...

  2. This probably means that Tcl wasn't installed properly.

    报错 D:/Anaconda3/tcl/tcl8.6/init.tcl: version conflict for package "Tcl": have 8.6.8, need ...

  3. Windows 7 sometimes breaks FTP connections on Java 7 if firewall is enabled.

    Solution: 用管理员身份,在cmd命令行输入: netsh advfirewall set global StatefulFTP disable 会关闭防火墙,从而解决问题.

  4. Atcoder/Topcoder 口胡记录

    Atcoder/Topcoder 理论 AC Atcoder的❌游戏示范 兴致勃勃地打开一场 AGC 看 A 题,先 WA 一发,然后花了一年时间 Fix. 看 B 题,啥玩意?这能求? 睡觉觉. e ...

  5. CodeForces 980 C Posterized

    Posterized 题意:将[0,255] 分成 若干段, 每一段的长度最多为k, 每一个数只能被放进一个段里, 然后每一段的数组都可以被这一段最小的数字表示, 求最小的字典序. 题解:每次一个访问 ...

  6. CF1005C Summarize to the Power of Two 暴力 map

    Summarize to the Power of Two time limit per test 3 seconds memory limit per test 256 megabytes inpu ...

  7. 【Offer】[45]【把数组排成最小的数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如,输入数组{3,32,321},则打印出 ...

  8. 8 分钟入门 K8s | 详解容器基本概念

    作者| 阿里巴巴高级开发工程师 傅伟 一.容器与镜像 什么是容器? 在介绍容器的具体概念之前,先简单回顾一下操作系统是如何管理进程的. 首先,当我们登录到操作系统之后,可以通过 ps 等操作看到各式各 ...

  9. Winform中设置ZedGraph曲线图的字体样式是避免出现边框

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  10. 用button 属性来保存字符串地址

    我用到for循环创建button  通过点击不同的按钮拿到每个button对应的链接地址,因为button的个数也是通过后台数据返回.上代码: //保存到数组 _array = [Article mj ...