判斷日期是否為法定節假日的API接口與示例函數
需要判定某日期是否為法定節假日,由於國家的節假日每年都在變動,所以使用接口判定是必要的。可惜的是,這樣的接口並不多,在此匯總三個:
- http://tool.bitefu.net/jiari/
- http://www.easybots.cn/holiday_api.net
- https://www.juhe.cn/docs/api/id/177
前兩個看起來是個人的,最后一個是聚合數據的萬年歷接口。
在我的小項目中使用了前兩個。感覺個人的搭建可能不會太穩定,但是聚合的api我看限制越來越多,每天只能進行100次調用。
附送一段小項目中的代碼,使用curl獲取前兩項接口和Thinkphp5的緩存機制,判斷當前日期是否為節假日的函數。
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接口與示例函數
需要判定某日期是否為法定節假日,由於國家的節假日每年都在變動,所以使用接口判定是必要的。可惜的是,這樣的接口並不多,在此匯總三個:
- http://tool.bitefu.net/jiari/
- http://www.easybots.cn/holiday_api.net
- https://www.juhe.cn/docs/api/id/177
前兩個看起來是個人的,最后一個是聚合數據的萬年歷接口。
在我的小項目中使用了前兩個。感覺個人的搭建可能不會太穩定,但是聚合的api我看限制越來越多,每天只能進行100次調用。
附送一段小項目中的代碼,使用curl獲取前兩項接口和Thinkphp5的緩存機制,判斷當前日期是否為節假日的函數。
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。
由於兩個接口都不像太規范,建議在使用的時候,先看一下是否還可用。如果能考慮一定預算的話,推薦使用聚合接口穩定點。