php怎么根据农历生日进行转换

php根据农历生日转换阳历的方法:首先保存一个PHP日期时间操作类;然后通过“function convertLunarToSolar($year,$month,$date){…}”方法将农历转为阳历即可。

php怎么根据农历生日进行转换

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

PHP 农历-阳历转换

分享一个实用的PHP日期时间操作类,里面包括了公历-农历转换、转换成中文日期格式、计算农历相隔天数、根据阴历年获取生肖、获取阴历月份的天数、获取农历每年的天数、获取闰月、计算阴历日期与正月初一相隔的天数、计算2个公历(阳历)日期之间的天数、根据距离正月初一的天数计算阴历日期、获取天干地支纪年等,PHP日期操作类:Lunar.class.php代码如下:

lunarInfo[$year-$this->MIN_YEAR];        if($year==$this->MIN_YEAR&&$monthgetLunarByBetween($year,$this->getDaysBetweenSolar($year,$month,$date,$yearData[1],$yearData[2]));    }    function convertSolarMonthToLunar($year,$month) {        $yearData = $this->lunarInfo[$year-$this->MIN_YEAR];        if($year==$this->MIN_YEAR&&$monthisLeapYear($year) && $month == 2) $dd++;        $lunar_ary = array();        for ($i = 1; $i getLunarByBetween($year,$this->getDaysBetweenSolar($year, $month, $i, $yearData[1], $yearData[2]));            $array[] = $year . '-' . $month . '-' . $i;            $lunar_ary[$i] = $array;        }        return $lunar_ary;    }    /**     * 判断是否是闰年     * @param year     */    function isLeapYear($year){        return (($year%4==0 && $year%100 !=0) || ($year%400==0));    }    /**     * 获取干支纪年     * @param year     */    function getLunarYearName($year){         $sky = array('庚','辛','壬','癸','甲','乙','丙','丁','戊','己');         $earth = array('申','酉','戌','亥','子','丑','寅','卯','辰','巳','午','未');         $year = $year.'';         return $sky[$year{3}].$earth[$year%12];    }    /**     * 根据阴历年获取生肖     * @param year 阴历年     */    function getYearZodiac($year){         $zodiac = array('猴','鸡','狗','猪','鼠','牛','虎','兔','龙','蛇','马','羊');         return $zodiac[$year%12];    }    /**    * 将阴历转换为阳历    * @param year 阴历-年    * @param month 阴历-月,闰月处理:例如如果当年闰五月,那么第二个五月就传六月,相当于阴历有13个月,只是有的时候第13个月的天数为0    * @param date 阴历-日    */    function convertLunarToSolar($year,$month,$date){        $yearData = $this->lunarInfo[$year-$this->MIN_YEAR];        $between = $this->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 阳历-年     * @param month 阳历-月     */    function getSolarMonthDays($year,$month){         $monthHash = array('1'=>31,'2'=>$this->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 阴历-月,从一月开始     */    function getLunarMonthDays($year,$month){         $monthData = $this->getLunarMonths($year);         return $monthData[$month-1];    }    /**     * 获取阴历每月的天数的数组     * @param year     */    function getLunarMonths($year){        $yearData = $this->lunarInfo[$year - $this->MIN_YEAR];        $leapMonth = $yearData[0];        $bit = decbin($yearData[3]);        for ($i = 0; $i lunarInfo[$year-$this->MIN_YEAR];        $monthArray = $this->getLunarYearMonths($year);        $len = count($monthArray);        return ($monthArray[$len-1]==0?$monthArray[$len-2]:$monthArray[$len-1]);    }    function getLunarYearMonths($year){         //debugger;        $monthData = $this->getLunarMonths($year);        $res=array();        $temp=0;        $yearData = $this->lunarInfo[$year-$this->MIN_YEAR];        $len = ($yearData[0]==0?12:13);        for($i=0;$ilunarInfo[$year-$this->MIN_YEAR];        return $yearData[0];    }    /**     * 计算阴历日期与正月初一相隔的天数     * @param year     * @param month     * @param date     */    function getDaysBetweenLunar($year,$month,$date){        $yearMonth = $this->getLunarMonths($year);        $res=0;        for($i=1;$i0? $year : ($year-1);            $yearMonth = $this->getLunarYearMonths($year);            $leapMonth = $this->getLeapMonth($year);            $between = $between>0?$between : ($this->getLunarYearDays($year)+$between);            for($i=0;$igetCapitalNum($t- 1,true)):$this->getCapitalNum(($leapMonth!=0&&$leapMonth+1toYear($year);            array_push($lunarArray,$my_year,$m,$this->getCapitalNum($e,false));        }        array_push($lunarArray,$this->getLunarYearName($year));// 天干地支        array_push($lunarArray,$t,$e);        array_push($lunarArray,$this->getYearZodiac($year));// 12生肖        array_push($lunarArray,$leapMonth);// 闰几月        return $lunarArray;    } //转换成中文年份    function toYear($year){  $arr = array("零","一","二","三","四","五","六","七","八","九");  $year_arr = str_split($year);  $str = $arr[$year_arr[0]].$arr[$year_arr[1]].$arr[$year_arr[2]].$arr[$year_arr[3]];  return $str; }    /**     * 获取数字的阴历叫法     * @param num 数字     * @param isMonth 是否是月份的数字     */    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($num10&&$num20&&$num

登录后复制

请将上面的代码保存为:Lunar.class.php,下面的例子将会调用这个文件,告诉你使用方法。

立即学习“PHP免费学习笔记(深入)”;

convertSolarToLunar(2014,2,12); //公历转农历$date = $lunar->getYearZodiac(2014,2,12); //根据阴历年获取生肖$date = $lunar->isLeapYear(2014,2,12); //判断闰年//其它功能也是这种调用方法print_r($date);//如果是农历转公历,代码如下:$date = $lunar->convertLunarToSolar(2014,2,12); //农历转公历print_r($date);?>

登录后复制

推荐学习:《PHP视频教程》

以上就是php怎么根据农历生日进行转换的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2512685.html

(0)
上一篇 2025年3月5日 14:56:27
下一篇 2025年2月26日 04:46:29

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php排队怎么实现

    php实现排队的方法:首先对Session存取方式进行自定义;然后将SessionID以文件名的方式存入了一个文件夹中;最后进行数据库相关操作并删除Session文件即可。 本文操作环境:windows7系统、PHP7.1版,DELL G3…

    2025年3月5日
    200
  • php怎么删除文本文件内容

    php删除文本文件内容的方法:首先创建一个PHP示例文件;然后定义操作文件以及确定要删除的行关键字;接着读取文件数据到数组中;最后删除文件指定内容即可。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 php怎么删除…

    2025年3月5日
    200
  • php跳转页面出现forbidden怎么办

    php跳转页面出现forbidden的解决办法:首先打开apache的配置文件httpd.conf;然后修改内容为“allow from all”即可。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 php跳转页面…

    2025年3月5日
    200
  • php 不支持unicode吗

    php是不支持unicode的,因为Unicode是一种表示所有字母和符号的可靠方式,而PHP只能支持八位二进制编码的字符集。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 php 不支持unicode吗? Uni…

    2025年3月5日
    200
  • php strftime 乱码怎么办

    php strftime乱码的解决办法:1、使用GBK编码来解释输出;2、在调用strftime前,把系统时间设置成想要的编码格式。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 php strftime 乱码怎么…

    2025年3月5日
    200
  • php exec 没有返回值怎么办

    php exec没有返回值的解决办法:首先查找exec调用代码;然后修改语句为“exec(‘convert a.jpg b.jpg 2>&1’, $output, $return_val);”即可。 本…

    2025年3月5日
    200
  • php怎么实现换一批功能

    php实现换一批功能的方法:首先创建一个PHP示例文件;然后通过“public function refresh(){…}”方法实现换一批功能即可。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 php…

    2025年3月5日
    200
  • php curl怎么返回错误

    php curl返回错误的方法:首先创建一个指向一个不存在的位置的cURL句柄;然后通过“curl_error”函数返回一条最近一次cURL操作明确的文本的错误信息;最后关闭句柄即可。 本文操作环境:windows7系统、PHP7.1版,D…

    2025年3月5日
    200
  • php怎么实现数字转化成大写

    php实现数字转化成大写的方法:1、通过“toChineseNumber”方法实现转换;2、通过“num_to_rmb”方法进行转换;3、通过“convert_2_cn”方法实现转换;4、通过“convertCurrency”转换。 本文操…

    2025年3月5日
    200
  • php怎么设置session失效时间

    php设置session失效时间的方法:1、打开php.ini,找到并设置“session.gc_maxlifetime=1440”;2、设置“session.gc_pisor”的值;3、在php程序中设置过期时间。 本文操作环境:wind…

    2025年3月5日
    200

发表回复

登录后才能评论