How PHP gets lunar dates with a new calendar
Array (8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1), 1=>array (0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2), 2=> Array (0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3), 3=>array (5,29,30,29,30,29,29,30,29,29,30,30,29,30,10,4), 4=>array (0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5), 5=>array (0,30,30,29,30,30,29,29,30,29,30,29,30 , 0,2,6), 6=>array (4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7), 7=>array (0,29,30,29,30,29,30,30,29, 30,29,30,29,0,4,8), 8=>array (0,30,29,29,30,30,29,30,29,30,30,29,30,0,5,9), 9=>array (2,29,30,29,29,30 , 29,30,29,30,30,30,29,30,6,10), 10=>array (0,29,30,29,29,30,29,30,29,30,30,30,29,0,7,11), 11=>array (6 , 30,29,30,29,29,30,29,29,30,30,29,30,30,8,12), 12=>array (0,30,29,30,29,29,30,29,29,30,30,29,30,0,9,1), 13=>array (0,30,30,29,30,29,29,30,29,29,30,29,30,0,10,2), 14=>array ( 5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3), 15=>arraY (0,30,29,30,30,29,30,29,30,29,30,29,30,0,2,4), 16=>array (0,29,30,29,30,29,30,30,29,30,29,30,29,0,3,5), 17=>array (2,30,29,29,30,29,30,30,29,30,30,29,30,29,4,6), 18=>array ( 0,30,29,29,30,29,30,29,30,30,29,30,30,0,5,7), 19=>array (7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8), 20=>array (0,29,30,29,29,30,29,29,30,30,29,30,30,0,7,9), 21=>array ( 0,30,29,30,29,29,30,29,29,30,29,30,30,0,8,10), 22=>array (5,30,29,30,30,29,29,30,29,29,30,29,30,30,9,11), 23=>array (0,29,30,30,29,30,29,30,29,29,30,29,30,0,10,12), 24=>array (0,29,30,30,29,30,30,29,30,29,30,29,29 , 0,1,1), 25=>array (4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2), 26=>array (0,29,29,30,29,30,29,30,3 0,29,30,30,29,0,3,3), 27=>array (0,30,29,29,30,29,30,29,30,29,30,30,30,0,4,4), 28=>array (2,29,30,29,2 9,30,29,29,30,29,30,30,30,30,5,5), 29=>array (0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6), 30=>array (6,29,30,30,29,29,30,29,29,30,29,30,30,29,7,7), 31=>array (0,30,30,29,30,29,30,29,29,30,29,30,29, 0,8,8), 32=>array (0,30,30,30,29,30,29,30,29,29,30,29,30,0,9,9), 33=>array (5,29,30,30,29,30,30,29,30, 29,30,29,29,30,10,10), 34=>array (0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11), 35=>array (0,29,29,30 , 29,30,29,30,30,29,30,30,29,0,2,12), 36=>array (3,30,29,29,30,29,29,30,30,29,30,30,30,29,3,1), 37=>ar Ray (0,30,29,29,30,29,29,30,29,30,30,30,29,0,4,2), 38=>array (7,30,30,29,29,30,29,29,30,29,30,30,29,30,5,3), 39=>array (0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4), 40=>array (0,30,30,29,30,29,30,29,29,30,29,30,29, 0,7,5), 41=>array (6,30,30,29,30,30,29,30,29,29,30,29,30,29,8,6), 42=>array (0,30,29,30,30,29,30,29,30 , 29,30,29,30,0,9,7), 43=>array (0,29,30,29,30,29,30,30,29,30,29,30,29,0,10,8), 44=>array (4,30,29,30,2 9,30,29,30,29,30,30,29,30,30,1,9), 45=>array (0,29,29,30,29,29,30,29,30,30,30,29,30,0,2,10), 46=>array (0,30,29,29,30,29,29,30 , 29,30,30,29,30,0,3,11), 47=>array (2,30,30,29,29,30,29,29,30,29,30,29,30,30,4,12), 48=>array (0,30,29 , 30,29,30,29,29,30,29,30,29,30,0,5,1), 49=>array (7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2), 50=> Array (0,29,30,30,29,30,30,29,29,30,29,30,29,0,7,3), 51=>array (0,30,29,30,30,29,30,29,30,29,30,29,30,0,8,4), 52=>array (5,29,30,29,30,29,30,29,30,30,29,30,29,30,9,5), 53=>array (0,29,30,29,29,30,30,29,30,30,29,30,2 9,0,10,6), 54=>array (0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7), 55=>array (3,29,30,29,30,29,29,30, 29,30,29,30,30,30,2,8), 56=>array (0,29,30,29,30,29,29,30,29,30,29,30,30,0,3,9), 57=>array (8,30,29,30 , 29,30,29,29,30,29,30,29,30,29,4,10), 58=>array (0,30,30,30,29,30,29,29,30,29,30,29,30,0,5,11), 59=>a Rray (0,29,30,30,29,30,29, 30,29,30,29,30,29,0,6,12), 60=>array (6,30,29,30,29,30,30,29,30,29,30,29,30,29,7,1), 61=>array (0,30, 29,30,29,30,29,30,30,29,30,29,30,0,8,2), 62=>array (0,29,30,29,29,30,29,30,30,29,30,30,29,0,9,3), 63=> ; Array (4,30,29,30,29,29,30,29,30,29,30,30,30,29,10,4), 64=>array (0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5 ), 65=>array (0,29,30,29,30,29,29,30,29,29,30,30,29,0,2,6), 66=>array (3,30,30,30,29,30,29,29,30,29,29 , 30,30,29,3,7), 67=>array (0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8), 68=>array (7,29,30,29,30,30,2 9,30,29,30,29,30,29,30,5,9), 69=>array (0,29,30,29,30,29,30,30,29,30,29,30,29,0,6,10), 70=>array (0,30 , 29,29,30,29,30,30,29,30,30,29,30,0,7,11), 71=>array (5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12), 72 =>array (0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1), 73=>array ( 0,30,29,30,29,29,30,29,29,30,30,29,30,0,10,2), 74=>array (4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3), 75=>array (0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4), 76 = >array (8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5), 77=>array ( 0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6), 78=>array (0,30,29,30,30,29,30,30,29,30,29,30,29,0,5,7), 7 9=>array (6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8), 80=>array ( 0,30,29,29,30,29,30,29,30,30,29,30,30,0,7,9), 81=>array (0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10), 82=>array (4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11), 83=>array ( 0,30,29,30,29,29,30,29,29,30,29,30,30,0,10,12), 84=>array (10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1), 85=>array (0,29,30,30,29,30,29,30,29,29,30,29,30,0,2,2), 86=>array (0,29,30,30,29,30,30,29,30,29,30,29,29,0 , 3,3), 87=>array (6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4), 88=>array (0,30,29,30,29,30,29,30,30, 29,30,30,29,0,5,5),89=>array (0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6), 90=>array ( 5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7), 91=>array (0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8), 92=>array (0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9), 93=>array ( 3,29,30,30,29,30,29,30,29,29,30,29,30,29,10,10), 94=>array (0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11), 95=>array (8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12), 96=>array (0,29,30,29,30,30,29,30,29,30,30,29,29 , 0,3,1), 97=>array (0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2), 98=>array (5,30,29,29,30,29,29,30,30 , 29,30,30,29,30,5,3), 99=>array (0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4), 100=>array (0,30,30,29, 29,30,29,29,30,29,30,30,29,0,7,5), 101=>array (4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6), 102=>ar Ray (0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7), 103=>array (0,30,30,29,30,30,29,30,29,29,30,29,30,0,10,8), 104=>array (2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9), 105=>array (0,29,30,29,30,29,30, 30,29,30,29,30,29,0,2,10), 106=>array (7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11), 107=>array (0,2 9,29,30,29,29,30,29,30,30,30,29,30,0,4,12), 108=>array (0,30,29,29,30,29,29,30,29,30,30,29,30,0,5,1), 10 9=>array (5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2), 110=>array ( 0,30,29,30,29,30,29,29,30,29,30,29,30,0,7,3), 111=>array (0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4), 112=>array (4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5), 113=>array ( 0,30,29,30,29,30,30,29,30,29,30,29,30,0,10,6), 114=>array (9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7), 115=>array (0,29,30,29,29,30,29,30,30,30,29,30,29,0,2,8), 116=>array (0,30,29,30,29,29,30,29,30,30,29,30,30 , 0,3,9), 117=>array (6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10), 118=>array (0,29, 30,29,30,29,29,30,29,30,29,30,30,0,5,11), 119=>array (0,30,29,30,29,30,29,29,30,29,29,30,30,0,6,12), 12 0=>array (4,29,30,30,30,29,30,29,29,30,29,30,29,30,7,1)); $cdate _tianganarray=array ("null", "Jia", "Yi", "Bing", "Ding", "Wu", "Ji", "Geng", "Xin", "Ren", "Kui"); $cdate _dizhiarray=array ("null", "Zi", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "You", "Xu", "Hai"); $cdate _zodiacarray=array ("null", "Rat", "Ox", "Tiger", "Rabbit", "Dragon", "Snake", "Horse", "Sheep", "Monkey", "Rooster "," Dog "," Pig "); $cdate _total=11; $cdate _cntotal=0; for ($y =1901; $y < $year; $y + +) {$cdate _total+=365; if ($y%4==0) $cdate _total + +; } switch ($month) {case: $cdate _total+=30; Case one: $cdate _total+=31; Case ten: $cdate _total+=30; Case 9: $cdate _total+=31; Case 8: $cdate _total+=31; Case 7: $cdate _total+=30; Case 6: $cdate _total+=31; Case 5: $cdate _total+=30; Case 4: $cdate _total+=31; Case 3: $cdate _total+=28; Case 2: $cdate _total+=31; } if ($year%4==0 and $month >2) {$cdate _total++; } $cdate _total = $cdate _total+ ($day-1); $myeardiff = $year-1900; for ($x =0; $x <= $myeardiff; $x + +) {for ($y =1; $y <=13; $y + +) {if ($cdate _cntotal< $cdate _total) { $cdate _cntotal+= $cdate _monthdata[$x] [$y]; $cdate _cnyear = $x; $cdate _cnmonth = $y; }}} if (($cdate _cnmonth== $cdate _monthdata[$cdate _cnyear][0]+1) && ($cdate _monthdata[$cdate _cnyear ][0]>0) {$cdate _leap=1; }else{$cdate _leap=0; } $cdate _cnday= $cdate _monthdata[$cdate _cnyear][$cdate _cnmonth]-($cdate _cntotal-$cdate _total); if ($cdate _monthdata[$cdate _cnyear][0]>0) && ($cdate _monthdata[$cdate _cnyear][0]< $cdate _cnmonth) {$cdate _cnmonth = $cdate _cnmonth-1; } $cdate _tiangan = $cdate _tianganarray[$cdate _monthdata[$cdate _cnyear][14]); $cdate _dizhi = $cdate _dizhiarray[$cdate _monthdata[$cdate _cnyear][15]]; $cdate _zodiac = $cdate _zodiacarray[$cdate _monthdata[$cdate _cnyear][15]]; $cdate _cnyear + = 1900; $cdate _result = Array ($cdate _cnyear, $cdate _cnmonth, $cdate _cnday, $cdate _leap, $cdate _tiangan, $cdate _dizhi); return $cdate _result; } $arr = Getchinesedate (' 2015 ', ' 10 ', ' 15 '); echo ' lunar calendar '. $arr [0]. ' Year '. $arr [1], ' month ', $arr [2]. ' Day ';?>