日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php农历生日计算,阴历-农历-转换类 (PHP版),阴历php

發布時間:2024/3/7 php 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php农历生日计算,阴历-农历-转换类 (PHP版),阴历php 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

陰歷-農歷-轉換類 (PHP版),陰歷phplunarInfo[$year-$this->MIN_YEAR];

if($year==$this->MIN_YEAR&&$month<=2&&$date<=9){

return array(1891,'正月','初一','辛卯',1,1,'兔');

}

return $this->getLunarByBetween($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&&$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($this->isLeapYear($year) && $month == 2) $dd++;

$lunar_ary = array();

for ($i = 1; $i < $dd; $i++) {

$array = $this->getLunarByBetween($year,$this->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 陰歷-日

*/

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

*/

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 陽歷-月

*/

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 < strlen($bit);$i ++) {

$bitArray[$i] = substr($bit, $i, 1);

}

for($k=0,$klen=16-count($bitArray);$klunarInfo[$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;$i<13;$i++){

if($between==$yearMonth[$i]){

$t=$i+2;

$e=1;

break;

}else if($betweengetCapitalNum($t- 1,true)):$this->getCapitalNum(($leapMonth!=0&&$leapMonth+1getCapitalNum($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;

}

/**

* 獲取數字的陰歷叫法

* @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($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;

}

}

$lunar = new Lunar();

$month = $lunar->convertLunarToSolar(2012, 1,1);

print_r($month);

exit;

相關標簽:農歷

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的php农历生日计算,阴历-农历-转换类 (PHP版),阴历php的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。