php获取美国节假日
做这个功能之前,尝试过baidu google,发现都不是很简练,所以我做出来分享一下。
思路就是用google的calenda api
由于用的是公共feed,所以不需要注册google api的帐号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public function getHolidayList() {
$feedUrl = "http://www.google.com/calendar/feeds/en.usa%23holiday%40group.v.calendar.google.com/public/full?singleevents=true&futureevents=true&max-results=99&orderby=starttime&sortorder=a";
//feed 的参数可以去翻看google calenda v2的api手册
//我这里的参数是显示出最近99个节假日记录
//不是所有节假日我们都放假,所以需要这个数组来指定哪些才是我们需要的节假日
$presetHoliday = array(
"Labor Day",
"Christmas Eve",
"Christmas Day",
"New Year's Day",
"Memorial Day",
"Independence Day",
"Thanksgiving Day"
);
$holidays = array();
$calendar = simplexml_load_file($feedUrl);
foreach ($calendar->entry as $item) {
if (in_array(trim((string) $item->title), $presetHoliday)) { // 把这个判断条件去掉,就是显示所有的节假日了
$ns_gd = $item->children('http://schemas.google.com/g/2005');
$gCalDate = date("Y-m-d", strtotime($ns_gd->when->attributes()->startTime));
$holidays[$gCalDate]=(string) $item->title;
//harcoded , 因为我们黑色星期五也放假,但是google不认为他是节假日
if((string) $item->title=="Thanksgiving Day")
{
$gCalDate = date("Y-m-d", strtotime($ns_gd->when->attributes()->startTime)+ 86400);
$holidays[$gCalDate]="Black Friday";
}
}
}
//$holidays这个数组就是结果
}
近期评论