- //PHP 太陽暦を太陰暦に変換するクラス
- class Calendar
- {
- #太陰暦の各月の日数
- var $everyCMonth=array(
- 0=>配列(8,0,0 ,0,0,0,0,0,0,0,0,0,29,30,7,1),
- 1=>配列(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 => 配列(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 =>配列(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10),
- 10=>配列(0,29,30 ,29,29,30,29,30,29,30,30,30,29,0,7,11),
- 11=>配列(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 =>配列(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3),
- 15=>配列(0,30,29 ,30,30,29,30,29,30,29,30,29,30,0,2,4),
- 16=>配列(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=>配列(0,29,30 ,29,29,30,29,29,30,30,29,30,30,0,7,9),
- 21=>配列(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 ,30,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,29,30,29,29,30,29,30,30,30,30, 5,5),
- 29 =>配列(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6),
- 30=>配列(6,29,30 ,30,29,29,30,29,29,30,29,30,30,29,7,7),
- 31=>配列(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 =>配列(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11),
- 35=>配列(0,29,29 ,30,29,30,29,30,30,29,30,30,29,0,2,12),
- 36=>配列(3,30,29,29, 30,29,29,30 ,30,29,30,30,30,29,3,1),
- 37=>array(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 =>配列(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4),
- 40=>配列(0,30,30 ,29,30,29,30,29,29,30,29,30,29,0,7,5),
- 41=>配列(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 =>配列(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9),
- 45=>配列(0,29,29 ,30,29,29,30,29,30,30,30,29,30,0,2,10),
- 46=>配列(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 =>配列(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2),
- 50=>配列(0,29,30 ,30,29,30,30,29,29,30,29,30,29,0,7,3),
- 51=>配列(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,29,0, 10,6),
- 54 =>配列(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7),
- 55=>配列(3,29,30 ,29,30,29,29,30,29,30,29,30,30,30,2,8),
- 56=>配列(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 =>配列(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12),
- 60=>配列(6,30,29 ,30,29,30,30,29,30,29,30,29,30,29,7,1),
- 61=>配列(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 =>配列(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5),
- 65=>配列(0,29,30 ,29,30,29,29,30,29,29,30,30,29,0,2,6),
- 66=>配列(3,30,30,30, 29,30,29,29 ,30,29,29,30,30,29,3,7)、
- 67=>配列(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8),
- 68=>配列(7,29, 30,29,30,30,29,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=>配列(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12),
- 72=>配列(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1),
- 73=>配列(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=>配列(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6),
- 78=>配列(0,30, 29,30,30,29,30,30,29,30,29,30,29,0,5,7),
- 79=>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=>配列(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10),
- 82=>配列(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11),
- 83=>配列(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=>配列(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3),
- 87=>配列(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4),
- 88=>配列(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=>配列(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9),
- 93=>配列(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=>配列(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2),
- 98=>配列(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=>配列(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6),
- 102=>配列(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7),
- 103=>配列(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=>配列(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12),
- 108=>配列(0,30, 29,29,30,29,29,30,29,30,30,29,30,0,5,1),
- 109=>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=>配列(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4),
- 112=>配列(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5),
- 113=>配列(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=>配列(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9),
- 117=>配列(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10),
- 118=>配列(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),
- 120=>array(4,29,30,30,30,29,30,29,29,30,29,30, 29,30,7,1)
- );
- ##############################
- #农历天干
-
- var $ mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"); #农历地支
- var $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)",
- 「巳(蛇)」、「午(马)」、「未(羊)」、「申(猴)」、「酉(鸡)」、「戌(狗)」、「亥(猪)」; #农历月份
- var $mmonth=array("闰","正","二","三","四","五","六",
- "七","八","九" ,"十","十一","十二","月");
- var $mday=array("null","初一","初二","初三","初四" 、"初五"、"初六"、"初七"、"初八"、"初九"、"初十"、
- 「イレブン」、「十二」、「十三」、「十四」、「十五」、「十六」、「十七」、「十八」、「十九」、「二十」、
- 「二十一」、「二十- 2"、"23"、"24"、"25"、"26"、"27"、"28"、"29"、"30" ; = 0;
- var $twelve=0;
- function MyPub($c Year,$cMonth,$cDay)
- {
- $total=11;#1900 年 12 月 21 日までの太陽暦の合計日数
- $mtotal=0 ;#旧暦 合計日数
- for ($y=1901;$y {
- $total+=365;
- if ($y%4==0) $total ++;
- }
- #現在の年を追加します
- スイッチの月($cMonth){
- case 12:
- $total+=30;
- case 11:
- $total+=31;
- case 10:
- $total+=30;
- case 9 :
- $total+=31 ;
- ケース 8:
- $total+=31;
- ケース 7:
- $total+=30;
- ケース 6:
- $total+=31;
- ケース 5:
- $total+=30;
- ケース 4 :
- $total+=31 ;
- case 3:
- $total+=28;
- case 2:
- $total+=31;
- }
-
- #現在の年がうるう年の場合は、1 日追加します
- if ($cyear% 4==0 および $cMonth>2)
- {
- $total++;
- }
-
- $total+=$cDay-1;
-
- ###################### #########
- #太陰暦の累積日数を使用して、太陽暦の日数を超えているかどうかを判断します
- for($j=0;$j<=120;$j++ )
- {
- $i=1;
- for($i=1;$i< =13;$i++)
- {
- $mtotal+=$this->everyCMonth[$j][$i];
- if ( $mtotal>=$total)
- {
- $flag=1;
- Break;
- }
- }
- if ($flag==1)break;
- }
- return array("m"=>$j,"d "=>$i,"t"=>$total,"n"= >$mtotal);
- }
- 関数 Cal($ Year,$Month,$Day)
- {
- $Par=$this- >MyPub($ Year,$Month,$Day);
-
- $md=$ this->everyCMonth[$Par["m"]][$Par["d"]]-($Par["n "]-$Par["t"]);
- $week=($Par[ "t"]+5)%7;
- if ($this->everyCMonth[$Par["m"]][0 ]<>0 および $this->everyCMonth[$Par["m" ]][0] {
- $mm=$Par["d"]-1 ;
- }else{
- $mm=$Par["d"];
- }
- if ($Par["d"]==$this->everyCMonth[$Par["d"]][0]+ 1 と $this->everyCMonth[$Par["d"]][0] <>0)
- {
- $cMonth=$this->mmonth[0].$this->mmonth[$ mm];#閏月
- }else{
- $cMonth=$this->mmonth[ $mm].$this->mmonth[13];
- }
- return array("year"=>$this- >mten[$this->everyCMonth[$Par["m"]][14 ]].$this->mtwelve[$this->everyCMonth[$Par["m"]][15]] ,
- "月"=>$cMonth,
- "日"=>$this- >mday[$md],
- "週"=>$week);
- }
- }
- /////
- $test=new Calendar;
- $ Year=$test->Cal(2004, 2,20);
- echo $ Year["year"]."year".$ Year["month"].$ Year を呼び出します。 ["日"]."週".$年["週"];
- ?> ;
-
-
- コードをコピー
-
PHP |