判斷日期是否為法定節(jié)假日的API接口與示例函數(shù)
需要判定某日期是否為法定節(jié)假日烦粒,由于國家的節(jié)假日每年都在變動(dòng)蜡秽,所以使用接口判定是必要的瘸羡′鱿桑可惜的是,這樣的接口并不多犹赖,在此匯總?cè)齻€(gè):
http://www.easybots.cn/holiday_api.net
https://www.juhe.cn/docs/api/id/177?—- 這個(gè)需要實(shí)名認(rèn)證
前兩個(gè)看起來是個(gè)人的讯赏,最后一個(gè)是聚合數(shù)據(jù)的萬年歷接口。
在我的小項(xiàng)目中使用了前兩個(gè)冷尉。感覺個(gè)人的搭建可能不會(huì)太穩(wěn)定漱挎,但是聚合的api我看限制越來越多,每天只能進(jìn)行100次調(diào)用雀哨。
附送一段小項(xiàng)目中的代碼磕谅,使用curl獲取前兩項(xiàng)接口和Thinkphp5的緩存機(jī)制私爷,判斷當(dāng)前日期是否為節(jié)假日的函數(shù)。
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()緩存助手函數(shù)是thinkphp5自帶膊夹,juhecurl()是一段curl訪問函數(shù)衬浑,僅供參考,不能直接轉(zhuǎn)移到其他項(xiàng)目中放刨。
由于兩個(gè)接口的返回結(jié)果是較為統(tǒng)一的工秩,工作日為0,休息日1进统,節(jié)假日2助币。所以沒有做詳細(xì)判斷,都取不到結(jié)果則返回-1螟碎。
由于兩個(gè)接口都不像太規(guī)范眉菱,建議在使用的時(shí)候,先看一下是否還可用掉分。如果能考慮一定預(yù)算的話俭缓,推薦使用聚合接口穩(wěn)定點(diǎn)。