PHP获取所有节日
獲取一定時間內的所有節日
- 服務層代碼
- 獲取當前年份的節日
- 獲取六個月的所有節日
服務層代碼
聲明服務器代碼
<?php /*** 農歷 節氣 節日 * edit: www.jbxue.com*/namespace app\common\server;class CalendarServer {const MIN_YEAR = 2020;const MAX_YEAR = 2022;const lunarInfo = array(array(0, 2, 9, 21936), array(6, 1, 30, 9656), array(0, 2, 17, 9584), array(0, 2, 6, 21168), array(5, 1, 26, 43344), array(0, 2, 13, 59728),array(0, 2, 2, 27296), array(3, 1, 22, 44368), array(0, 2, 10, 43856), array(8, 1, 30, 19304), array(0, 2, 19, 19168), array(0, 2, 8, 42352),array(5, 1, 29, 21096), array(0, 2, 16, 53856), array(0, 2, 4, 55632), array(4, 1, 25, 27304), array(0, 2, 13, 22176), array(0, 2, 2, 39632),array(2, 1, 22, 19176), array(0, 2, 10, 19168), array(6, 1, 30, 42200), array(0, 2, 18, 42192), array(0, 2, 6, 53840), array(5, 1, 26, 54568),array(0, 2, 14, 46400), array(0, 2, 3, 54944), array(2, 1, 23, 38608), array(0, 2, 11, 38320), array(7, 2, 1, 18872), array(0, 2, 20, 18800),array(0, 2, 8, 42160), array(5, 1, 28, 45656), array(0, 2, 16, 27216), array(0, 2, 5, 27968), array(4, 1, 24, 44456), array(0, 2, 13, 11104),array(0, 2, 2, 38256), array(2, 1, 23, 18808), array(0, 2, 10, 18800), array(6, 1, 30, 25776), array(0, 2, 17, 54432), array(0, 2, 6, 59984),array(5, 1, 26, 27976), array(0, 2, 14, 23248), array(0, 2, 4, 11104), array(3, 1, 24, 37744), array(0, 2, 11, 37600), array(7, 1, 31, 51560),array(0, 2, 19, 51536), array(0, 2, 8, 54432), array(6, 1, 27, 55888), array(0, 2, 15, 46416), array(0, 2, 5, 22176), array(4, 1, 25, 43736),array(0, 2, 13, 9680), array(0, 2, 2, 37584), array(2, 1, 22, 51544), array(0, 2, 10, 43344), array(7, 1, 29, 46248), array(0, 2, 17, 27808),array(0, 2, 6, 46416), array(5, 1, 27, 21928), array(0, 2, 14, 19872), array(0, 2, 3, 42416), array(3, 1, 24, 21176), array(0, 2, 12, 21168),array(8, 1, 31, 43344), array(0, 2, 18, 59728), array(0, 2, 8, 27296), array(6, 1, 28, 44368), array(0, 2, 15, 43856), array(0, 2, 5, 19296),array(4, 1, 25, 42352), array(0, 2, 13, 42352), array(0, 2, 2, 21088), array(3, 1, 21, 59696), array(0, 2, 9, 55632), array(7, 1, 30, 23208),array(0, 2, 17, 22176), array(0, 2, 6, 38608), array(5, 1, 27, 19176), array(0, 2, 15, 19152), array(0, 2, 3, 42192), array(4, 1, 23, 53864),array(0, 2, 11, 53840), array(8, 1, 31, 54568), array(0, 2, 18, 46400), array(0, 2, 7, 46752), array(6, 1, 28, 38608), array(0, 2, 16, 38320),array(0, 2, 5, 18864), array(4, 1, 25, 42168), array(0, 2, 13, 42160), array(10, 2, 2, 45656), array(0, 2, 20, 27216), array(0, 2, 9, 27968),array(6, 1, 29, 44448), array(0, 2, 17, 43872), array(0, 2, 6, 38256), array(5, 1, 27, 18808), array(0, 2, 15, 18800), array(0, 2, 4, 25776),array(3, 1, 23, 27216), array(0, 2, 10, 59984), array(8, 1, 31, 27432), array(0, 2, 19, 23232), array(0, 2, 7, 43872), array(5, 1, 28, 37736),array(0, 2, 16, 37600), array(0, 2, 5, 51552), array(4, 1, 24, 54440), array(0, 2, 12, 54432), array(0, 2, 1, 55888), array(2, 1, 22, 23208),array(0, 2, 9, 22176), array(7, 1, 29, 43736), array(0, 2, 18, 9680), array(0, 2, 7, 37584), array(5, 1, 26, 51544), array(0, 2, 14, 43344),array(0, 2, 3, 46240), array(4, 1, 23, 46416), array(0, 2, 10, 44368), array(9, 1, 31, 21928), array(0, 2, 19, 19360), array(0, 2, 8, 42416),array(6, 1, 28, 21176), array(0, 2, 16, 21168), array(0, 2, 5, 43312), array(4, 1, 25, 29864), array(0, 2, 12, 27296), array(0, 2, 1, 44368),array(2, 1, 22, 19880), array(0, 2, 10, 19296), array(6, 1, 29, 42352), array(0, 2, 17, 42208), array(0, 2, 6, 53856), array(5, 1, 26, 59696),array(0, 2, 13, 54576), array(0, 2, 3, 23200), array(3, 1, 23, 27472), array(0, 2, 11, 38608), array(11, 1, 31, 19176), array(0, 2, 19, 19152),array(0, 2, 8, 42192), array(6, 1, 28, 53848), array(0, 2, 15, 53840), array(0, 2, 4, 54560), array(5, 1, 24, 55968), array(0, 2, 12, 46496),array(0, 2, 1, 22224), array(2, 1, 22, 19160), array(0, 2, 10, 18864), array(7, 1, 30, 42168), array(0, 2, 17, 42160), array(0, 2, 6, 43600),array(5, 1, 26, 46376), array(0, 2, 14, 27936), array(0, 2, 2, 44448), array(3, 1, 23, 21936), array(0, 2, 11, 37744), array(8, 2, 1, 18808),array(0, 2, 19, 18800), array(0, 2, 8, 25776), array(6, 1, 28, 27216), array(0, 2, 15, 59984), array(0, 2, 4, 27424), array(4, 1, 24, 43872),array(0, 2, 12, 43744), array(0, 2, 2, 37600), array(3, 1, 21, 51568), array(0, 2, 9, 51552), array(7, 1, 29, 54440), array(0, 2, 17, 54432),array(0, 2, 5, 55888), array(5, 1, 26, 23208), array(0, 2, 14, 22176), array(0, 2, 3, 42704), array(4, 1, 23, 21224), array(0, 2, 11, 21200),array(8, 1, 31, 43352), array(0, 2, 19, 43344), array(0, 2, 7, 46240), array(6, 1, 27, 46416), array(0, 2, 15, 44368), array(0, 2, 5, 21920),array(4, 1, 24, 42448), array(0, 2, 12, 42416), array(0, 2, 2, 21168), array(3, 1, 22, 43320), array(0, 2, 9, 26928), array(7, 1, 29, 29336),array(0, 2, 17, 27296), array(0, 2, 6, 44368), array(5, 1, 26, 19880), array(0, 2, 14, 19296), array(0, 2, 3, 42352), array(4, 1, 24, 21104),array(0, 2, 10, 53856), array(8, 1, 30, 59696), array(0, 2, 18, 54560), array(0, 2, 7, 55968), array(6, 1, 27, 27472), array(0, 2, 15, 22224),array(0, 2, 5, 19168), array(4, 1, 25, 42216), array(0, 2, 12, 42192), array(0, 2, 1, 53584), array(2, 1, 21, 55592), array(0, 2, 9, 54560));/*** 將陽歷轉換為陰歷* @param year 公歷-年* @param month 公歷-月* @param date 公歷-日*/public static function convertSolarToLunar($year, $month, $date){ //debugger;$yearData = self::lunarInfo[$year - self::MIN_YEAR];if ($year == self::MIN_YEAR && $month <= 2 && $date <= 9) return array(1891, '正月', '初一', '辛卯', 1, 1, '兔');return self::getLunarByBetween($year, self::getDaysBetweenSolar($year, $month, $date, $yearData[1], $yearData[2]));}public static function convertSolarMonthToLunar($year, $month, $date){$yearData = self::lunarInfo[$year - self::MIN_YEAR];if ($year == self::MIN_YEAR && $month <= 2 && $date <= 9) return array(1891, '正月', '初一', '辛卯', 1, 1, '兔');$month_days_ary = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);$dd = $month_days_ary[$month];if (self::isLeapYear($year) && $month == 2) $dd++;$lunar_ary = array();for ($i = 1; $i < $dd; $i++) {$array = self::getLunarByBetween($year, self::getDaysBetweenSolar($year, $month, $i, $yearData[1], $yearData[2]));$array[] = $year . '-' . $month . '-' . $i;$lunar_ary[$i] = $array;}return $lunar_ary;}/*** 將陰歷轉換為陽歷* @param year 陰歷-年* @param month 陰歷-月,閏月處理:例如如果當年閏五月,那么第二個五月就傳六月,相當于陰歷有13個月,只是有的時候第13個月的天數為0* @param date 陰歷-日*/public static function convertLunarToSolar($year, $month, $date){$yearData = self::lunarInfo[$year - self::MIN_YEAR];$between = self::getDaysBetweenLunar($year, $month, $date);$res = mktime(0, 0, 0, $yearData[1], $yearData[2], $year);$res = date('Y-m-d', $res + $between * 24 * 60 * 60);$day = explode('-', $res);$year = $day[0];$month = $day[1];$day = $day[2];return array($year, $month, $day);}/*** 判斷是否是閏年* @param year*/public static function isLeapYear($year){return (($year % 4 == 0 && $year % 100 != 0) || ($year % 400 == 0));}/*** 獲取干支紀年* @param year*/public static function getLunarYearName($year){$sky = array('庚', '辛', '壬', '癸', '甲', '乙', '丙', '丁', '戊', '己');$earth = array('申', '酉', '戌', '亥', '子', '丑', '寅', '卯', '辰', '巳', '午', '未');$year = $year . '';return $sky[$year{3}] . $earth[$year % 12];}/*** 根據陰歷年獲取生肖* @param year 陰歷年*/public static function getYearZodiac($year){$zodiac = array('猴', '雞', '狗', '豬', '鼠', '牛', '虎', '兔', '龍', '蛇', '馬', '羊');return $zodiac[$year % 12];}/*** 獲取陽歷月份的天數* @param year 陽歷-年* @param month 陽歷-月*/public static function getSolarMonthDays($year, $month){$monthHash = array('1' => 31, '2' => self::isLeapYear($year) ? 29 : 28, '3' => 31, '4' => 30, '5' => 31, '6' => 30, '7' => 31, '8' => 31, '9' => 30, '10' => 31, '11' => 30, '12' => 31);return $monthHash["$month"];}/*** 獲取陰歷月份的天數* @param year 陰歷-年* @param month 陰歷-月,從一月開始*/public static function getLunarMonthDays($year, $month){$monthData = self::getLunarMonths($year);return $monthData[$month - 1];}/*** 獲取陰歷每月的天數的數組* @param year*/public static function getLunarMonths($year){$yearData = self::lunarInfo[$year - self::MIN_YEAR];$leapMonth = $yearData[0];$bit = decbin($yearData[3]);for ($i = 0; $i < strlen($bit); $i++) $bitArray[$i] = substr($bit, $i, 1);for ($k = 0, $klen = 16 - count($bitArray); $k < $klen; $k++) array_unshift($bitArray, '0');$bitArray = array_slice($bitArray, 0, ($leapMonth == 0 ? 12 : 13));for($i=0; $i<count($bitArray); $i++ ) $bitArray[$i] = $bitArray[$i] + 29;return $bitArray;}/*** 獲取農歷每年的天數* @param year 農歷年份*/public static function getLunarYearDays($year){$yearData = self::lunarInfo[$year - self::MIN_YEAR];$monthArray = self::getLunarYearMonths($year);$len = count($monthArray);return ($monthArray[$len - 1] == 0 ? $monthArray[$len - 2] : $monthArray[$len - 1]);}public static function getLunarYearMonths($year){ //debugger;$monthData = self::getLunarMonths($year);$res = array();$temp = 0;$yearData = self::lunarInfo[$year - self::MIN_YEAR];$len = ($yearData[0] == 0 ? 12 : 13);for ($i = 0; $i < $len; $i++) {$temp = 0;for ($j = 0; $j <= $i; $j++) $temp += $monthData[$j];array_push($res, $temp);}return $res;}/*** 獲取閏月* @param year 陰歷年份*/public static function getLeapMonth($year){$yearData = self::lunarInfo[$year - self::MIN_YEAR];return $yearData[0];}/*** 計算陰歷日期與正月初一相隔的天數* @param year* @param month* @param date*/public static function getDaysBetweenLunar($year, $month, $date){$yearMonth = self::getLunarMonths($year);$res = 0;for ($i = 1; $i < $month; $i++) $res += $yearMonth[$i - 1];$res += $date - 1;return $res;}/*** 計算2個陽歷日期之間的天數* @param year 陽歷年* @param cmonth* @param cdate* @param dmonth 陰歷正月對應的陽歷月份* @param ddate 陰歷初一對應的陽歷天數*/public static function getDaysBetweenSolar($year, $cmonth, $cdate, $dmonth, $ddate){$a = mktime(0, 0, 0, $cmonth, $cdate, $year);$b = mktime(0, 0, 0, $dmonth, $ddate, $year);return ceil(($a - $b) / 24 / 3600);}/*** 根據距離正月初一的天數計算陰歷日期* @param year 陽歷年* @param between 天數*/public static function getLunarByBetween($year, $between){ //debugger;$lunarArray = array();$yearMonth = array();$t = 0;$e = 0;$leapMonth = 0;$m = '';if ($between == 0) {array_push($lunarArray, $year, '正月', '初一');$t = 1;$e = 1;} else {$year = $between > 0 ? $year : ($year - 1);$yearMonth = self::getLunarYearMonths($year);$leapMonth = self::getLeapMonth($year);$between = $between > 0 ? $between : (self::getLunarYearDays($year) + $between);for ($i = 0; $i < 13; $i++) {if ($between == $yearMonth[$i]) {$t = $i + 2;$e = 1;break;} else if ($between < $yearMonth[$i]) {$t = $i + 1;$e = $between - (empty($yearMonth[$i - 1]) ? 0 : $yearMonth[$i - 1]) + 1;break;}}$m = ($leapMonth != 0 && $t == $leapMonth + 1) ? ('閏' . self::getCapitalNum($t - 1, true)) : self::getCapitalNum(($leapMonth != 0 && $leapMonth + 1 < $t ? ($t - 1) : $t), true);array_push($lunarArray, $year, $m, self::getCapitalNum($e, false));}array_push($lunarArray, self::getLunarYearName($year));// 天干地支array_push($lunarArray, $t, $e);array_push($lunarArray, self::getYearZodiac($year));// 12生肖array_push($lunarArray, $leapMonth);// 閏幾月return $lunarArray;}/*** 獲取數字的陰歷叫法* @param num 數字* @param isMonth 是否是月份的數字*/public static function getCapitalNum($num, $isMonth){$isMonth = $isMonth || false;$dateHash = array('0' => '', '1' => '一', '2' => '二', '3' => '三', '4' => '四', '5' => '五', '6' => '六', '7' => '七', '8' => '八', '9' => '九', '10' => '十 ');$monthHash = array('0' => '', '1' => '正月', '2' => '二月', '3' => '三月', '4' => '四月', '5' => '五月', '6' => '六月', '7' => '七月', '8' => '八月', '9' => '九月', '10' => '十月', '11' => '冬月', '12' => '臘月');$res = '';if ($isMonth) $res = $monthHash[$num];else {if ($num <= 10) $res = '初' . $dateHash[$num];else if ($num > 10 && $num < 20) $res = '十' . $dateHash[$num - 10];else if ($num == 20) $res = "二十";else if ($num > 20 && $num < 30) $res = "廿" . $dateHash[$num - 20];else if ($num == 30) $res = "三十";}return $res;}/*** 節氣通用算法*/public static function getJieQi($_year, $month, $day){$year = substr($_year, -2) + 0;$coefficient = array(array(5.4055, 2019, -1),//小寒array(20.12, 2082, 1),//大寒array(3.87),//立春array(18.74, 2026, -1),//雨水array(5.63),//驚蟄array(20.646, 2084, 1),//春分array(4.81),//清明array(20.1),//谷雨array(5.52, 1911, 1),//立夏array(21.04, 2008, 1),//小滿array(5.678, 1902, 1),//芒種array(21.37, 1928, 1),//夏至array(7.108, 2016, 1),//小暑array(22.83, 1922, 1),//大暑array(7.5, 2002, 1),//立秋array(23.13),//處暑array(7.646, 1927, 1),//白露array(23.042, 1942, 1),//秋分array(8.318),//寒露array(23.438, 2089, 1),//霜降array(7.438, 2089, 1),//立冬array(22.36, 1978, 1),//小雪array(7.18, 1954, 1),//大雪array(21.94, 2021, -1)//冬至);$term_name = array("小寒", "大寒", "立春", "雨水", "驚蟄", "春分", "清明", "谷雨","立夏", "小滿", "芒種", "夏至", "小暑", "大暑", "立秋", "處暑","白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至");$idx1 = ($month - 1) * 2;$_leap_value = floor(($year - 1) / 4);$day1 = floor($year * 0.2422 + $coefficient[$idx1][0]) - $_leap_value;if (isset($coefficient[$idx1][1]) && $coefficient[$idx1][1] == $_year) $day1 += $coefficient[$idx1][2];$day2 = floor($year * 0.2422 + $coefficient[$idx1 + 1][0]) - $_leap_value;if (isset($coefficient[$idx1 + 1][1]) && $coefficient[$idx1 + 1][1] == $_year) $day1 += $coefficient[$idx1 + 1][2];//echo __FILE__ . '->' . __LINE__ . ' $day1=' . $day1, ',$day2=' . $day2 . '' . chr(10);$data = array();if ($day < $day1) {$data['name1'] = $term_name[$idx1 - 1];$data['name2'] = $term_name[$idx1 - 1] . '后';} else if ($day == $day1) {$data['name1'] = $term_name[$idx1];$data['name2'] = $term_name[$idx1];} else if ($day > $day1 && $day < $day2) {$data['name1'] = $term_name[$idx1];$data['name2'] = $term_name[$idx1] . '后';} else if ($day == $day2) {$data['name1'] = $term_name[$idx1 + 1];$data['name2'] = $term_name[$idx1 + 1];} else if ($day > $day2) {$data['name1'] = $term_name[$idx1 + 1];$data['name2'] = $term_name[$idx1 + 1] . '后';}return $data;}/*** 獲取節日:特殊的節日只能修改此函數來計算*/public static function getFestival($today, $nl_info = false, $config = 1){if ($config == 1) {$arr_lunar = array('01-01' => '春節', '01-15' => '元宵節', '02-02' => '二月二', '05-05' => '端午節', '07-07' => '七夕節', '08-15' => '中秋節', '09-09' => '重陽節', '12-08' => '臘八節', '12-23' => '小年');$arr_solar = array('01-01' => '元旦', '02-14' => '情人節', '03-12' => '植樹節', '04-01' => '愚人節', '05-01' => '勞動節', '06-01' => '兒童節', '10-01' => '國慶節', '10-31' => '萬圣節', '12-24' => '平安夜', '12-25' => '圣誕節');}//需要不同節日的,用不同的$config,然后配置$arr_lunar和$arr_solar$festivals = array();list($y, $m, $d) = explode('-', $today);if (!$nl_info) $nl_info = self::convertSolarToLunar($y, intval($m), intval($d));if ($nl_info[7] > 0 && $nl_info[7] < $nl_info[4]) $nl_info[4] -= 1;$md_lunar = substr('0' . $nl_info[4], -2) . '-' . substr('0' . $nl_info[5], -2);$md_solar = substr_replace($today, '', 0, 5);isset($arr_lunar[$md_lunar]) ? array_push($festivals, $arr_lunar[$md_lunar]) : '';isset($arr_solar[$md_solar]) ? array_push($festivals, $arr_solar[$md_solar]) : '';$glweek = date("w", strtotime($today)); //0-6if ($m == 5 && ($d > 7) && ($d < 15) && ($glweek == 0)) array_push($festivals, "母親節");if ($m == 6 && ($d > 14) && ($d < 22) && ($glweek == 0)) array_push($festivals, "父親節");$jieqi = self::getJieQi($y, $m, $d);if ($jieqi) array_push($festivals, $jieqi);print_r($festivals);die;return implode('/', $festivals);}/*** 獲取當前時間屬于哪個時辰@param int $time 時間戳*/public static function getTheHour($h){$d = $h;if ($d == 23 || $d == 0) {return '子時';} else if ($d == 1 || $d == 2) {return '丑時';} else if ($d == 3 || $d == 4) {return '寅時';} else if ($d == 5 || $d == 6) {return '卯時';} else if ($d == 7 || $d == 8) {return '辰時';} else if ($d == 9 || $d == 10) {return '巳時';} else if ($d == 11 || $d == 12) {return '午時';} else if ($d == 13 || $d == 14) {return '未時';} else if ($d == 15 || $d == 16) {return '申時';} else if ($d == 17 || $d == 18) {return '酉時';} else if ($d == 19 || $d == 20) {return '戌時';} else if ($d == 21 || $d == 22) {return '亥時';}}/*** 獲取節日:特殊的節日只能修改此函數來計算*/public static function getFestivals($today, $nl_info = false, $config = 1){if ($config == 1) {$arr_lunar = array('01-01' => '春節', '01-15' => '元宵節', '02-02' => '二月二', '05-05' => '端午節', '07-07' => '七夕節', '08-15' => '中秋節', '09-09' => '重陽節', '12-08' => '臘八節', '12-23' => '小年');$arr_solar = array('01-01' => '元旦', '02-14' => '情人節', '03-12' => '植樹節', '04-01' => '愚人節', '05-01' => '勞動節', '06-01' => '兒童節', '09-10' => '教師節', '10-01' => '國慶節', '10-31' => '萬圣節', '12-24' => '平安夜', '12-25' => '圣誕節');}//需要不同節日的,用不同的$config,然后配置$arr_lunar和$arr_solar$festivals = array();list($y, $m, $d) = explode('-', $today);if (!$nl_info) $nl_info = self::convertSolarToLunar($y, intval($m), intval($d));if ($nl_info[7] > 0 && $nl_info[7] < $nl_info[4]) $nl_info[4] -= 1;$md_lunar = substr('0' . $nl_info[4], -2) . '-' . substr('0' . $nl_info[5], -2);$md_solar = substr_replace($today, '', 0, 5);isset($arr_lunar[$md_lunar]) ? array_push($festivals, $arr_lunar[$md_lunar]) : '';isset($arr_solar[$md_solar]) ? array_push($festivals, $arr_solar[$md_solar]) : '';$glweek = date("w", strtotime($today)); //0-6if ($m == 5 && ($d > 7) && ($d < 15) && ($glweek == 0)) array_push($festivals, "母親節");if ($m == 6 && ($d > 14) && ($d < 22) && ($glweek == 0)) array_push($festivals, "父親節");//$jieqi = self::getJieQi($y, $m, $d);//if ($jieqi) array_push($festivals, $jieqi);//print_r($festivals);die;if(!empty($festivals)){return implode('/', $festivals);}return false;}/*** 獲取指定日期段內每一天的日期* @param $startdate 2021-01-01 開始日期* @param $enddate 2021-01-11 結束日期* @return array*/public static function getDateFromRange($startdate, $enddate){$stimestamp = strtotime($startdate);$etimestamp = strtotime($enddate);// 計算日期段內有多少天$days = ($etimestamp-$stimestamp)/86400+1;// 保存每天日期$date = array();for($i=0; $i<$days; $i++){$date[] = date('Y-m-d', $stimestamp+(86400*$i));}return $date;}/*** 獲取當月天數* @param $date 2021-01-01* @param string $rtype 1天數 2具體日期數組* @return string*/public static function get_day( $date ,$rtype = '1'){$tem = explode('-' , $date); //切割日期 得到年份和月份$year = $tem['0'];$month = $tem['1'];if(in_array($month,array('1','3','5','7','8','01','03','05','07','08','10','12'))){// $text = $year.'年的'.$month.'月有31天';$text = '31';}elseif( $month == 2 ){if ( $year%400 == 0 || ($year%4 == 0 && $year%100 !== 0) ) //判斷是否是閏{// $text = $year.'年的'.$month.'月有29天';$text = '29';}else{// $text = $year.'年的'.$month.'月有28天';$text = '28';}}else{// $text = $year.'年的'.$month.'月有30天';$text = '30';}if ($rtype == '2') {for ($i = 1; $i <= $text ; $i ++ ) {$day = (strlen($i)==2) ? $i : '0'.$i;$r[] = $year."-".$month."-".$day;}} else {$r = $text;}return $r;} } /*$lunar=new Lunar();// $month=$lunar->getJieQi(2017,05,13);//將陽歷轉換為陰歷 echo ' '; print_r($month);*/獲取當前年份的節日
獲取當年所有的節日
/*** 獲取當前年份的節日*/ public function festival(){$start_time = date('Y').'-01-01';$end_time = date('Y').'-12-31';//獲取規定日期內的所有日期$today = CalendarServer::getDateFromRange($start_time,$end_time);//print_r($today);die;$festival_name = [];foreach($today as $k=>$v){//獲取節假日名稱$festival = CalendarServer::getFestivals($v);if($festival){$v = explode('-',$v);$festival_name[$v[0].'-'.$v[1]][$v[2]] = $festival;}}$result = [];$i=0;foreach($festival_name as $k=>$v){$k = explode('-',$k);$result[$i]['year'] = $k[0];$result[$i]['month'] = intval($k[1]);foreach($v as $k2=>$v2){$result[$i]['festival'][] = ['name'=>$v2,'day'=>intval($k2)];}$i++;}//print_r($result);die;if($result){$this->_success('獲取成功',$result);}$this->_error('獲取失敗',''); }獲取六個月的所有節日
/*** 獲取前6個月月份*/ private function to_sex_month() {$today = date("Y-m-d");$arr = array();$old_time = strtotime('+5 month', strtotime($today));for ($i = 0; $i <= 5; ++$i) {$t = strtotime("-$i month", $old_time);$yue = date('m', $t);$nian = date('Y', $t);$arr[$i]['begin'] = mktime(0, 0, 0, $yue, 1, $nian);$arr[$i]['end'] = mktime(23, 59, 59, ($yue + 1), 0, $nian);$arr[$i]['year'] = date('Y', $t);$arr[$i]['month'] = date('m', $t);}return array_reverse($arr); } /*** 獲取前六個月的節日*/ public function festival(){$month = $this->to_sex_month();$result = [];$i=0;foreach($month as $k=>$v){$result[$i]['year'] = $v['year'];$result[$i]['month'] = intval($v['month']);$get_day = CalendarServer::get_day($v['year'].'-'.$v['month'],'2');foreach($get_day as $k2=>$v2){$festival = CalendarServer::getFestivals($v2);if($festival) {$result[$i]['festival'][] = ['name' => $festival,'day' => intval(explode('-',$v2)[2])];}}if(empty($result[$i]['festival'])){unset($result[$i]);}$i++;}//print_r($result);die;if($result){$this->_success('獲取成功',$result);}$this->_error('獲取失敗',''); }總結
- 上一篇: dds信号发生器 fpga实现
- 下一篇: 使用Swiper4插件问题