PHP实现公历转节气

private function JieqiList($Year)
        {
            //echo $Year;
            $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)//冬至
            );
            $jq_name = array("",
                "立春","雨水",
                "惊蛰","春分",
                "清明","谷雨",
                "立夏","小满",
                "芒种","夏至",
                "小暑","大暑",
                "立秋","处暑",
                "白露","秋分",
                "寒露","霜降",
                "立冬","小雪",
                "大雪","冬至",
                "小寒","大寒");
            $rt=array(
                array("nian"=>$Year)
                );
            for($month=1;$month<13;$month++)
            {
                $idx1 = ($month-1)*2;
                $ns_leap_value=($year-1)/4;
                //$ns_leap_value=floor($ns_leap_value);
                $ns_day1=$year*0.2422+$coefficient[$idx1][0]-$ns_leap_value;
                $ns_day2=$year*0.2422+$coefficient[$idx1+1][0]-$ns_leap_value;
                
                if(isset($coefficient[$idx1][1])&&$coefficient[$idx1][1]=$year)
                {
                    $ns_day1+=$coefficient[$idx1][2];
                }
                if(isset($coefficient[$idx1+1][1])&&$coefficient[$idx1+1][1]==$Year)
                {
                    $ns_day1+=$coefficient[$idx1+1][2];
                }
                $id1=($month*2-1+22)%24;
                if($id1==0)
                {
                    $id1=24;
                }
                $id2=($month*2+22)%24;
                if($id2==0)
                {
                    $id2=24;
                }
                if($month<10)
                {
                    $month='0'.$month;
                }
                $day1=floor($ns_day1);
                if($day1<10)
                {
                    $day1='0'.$day1;
                }
                $shijian=$Year.'-'.$month.'-'.$day1.' '.$this->secToTime(($ns_day1-floor($ns_day1))*86400);
                $jie=array(
                    "id"=>$id1,
                    "zi"=>$jq_name[$id1],
                    "shijian"=>$shijian
                    );
                $shijian=$Year.'-'.$month.'-'.floor($ns_day2).' '.$this->secToTime(($ns_day2-floor($ns_day2))*86400);
                $qi=array(
                    "id"=>$id2,
                    "zi"=>$jq_name[$id2],
                    "shijian"=>$shijian
                );
                array_push($rt, array("jie"=>$jie,"qi"=>$qi));
            }
            // echo '<pre>';
            // print_r($rt);
            // echo '</pre>';
            // echo __FILE__.__LINE__;
            return $rt;
        }

 

posted @ 2022-11-16 02:09  周了个易  阅读(138)  评论(0)    收藏  举报