PowerRC's Blog

Posted by:
PowerRC

码农,吃货,偶尔飙车和摄影,应该属于危险人物。

1,826

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这个数组就是结果
       
    }

版权申明

若文中未注明,则本文由 PowerRC 原创,转载请注明出处。

分享

发表评论

*

code

back up ↑