ホームページ  >  記事  >  バックエンド開発  >  太陽暦を太陰暦に変換するための PHP クラス

太陽暦を太陰暦に変換するための PHP クラス

WBOY
WBOYオリジナル
2016-07-25 08:42:23845ブラウズ
  1. //PHP 太陽暦を太陰暦に変換するクラス
  2. class Calendar
  3. {
  4. #太陰暦の各月の日数
  5. var $everyCMonth=array(
  6. 0=>配列(8,0,0 ,0,0,0,0,0,0,0,0,0,29,30,7,1),
  7. 1=>配列(0,29,30,29, 29,30,29,30 ,29,30,30,30,29,0,8,2),
  8. 2=>array(0,30,29,30,29,29,30,29,30, 29,30,30,30 ,0,9,3),
  9. 3=>array(5,29,30,29,30,29,29,30,29,29,30,30,29,30, 10,4),
  10. 4 => 配列(0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5),
  11. 5=> array(0,30,30 ,29,30,30,29,29,30,29,30,29,30,0,2,6),
  12. 6=>array(4,29,30,30, 29,30,29,30 ,29,30,29,30,29,30,3,7),
  13. 7=>array(0,29,30,29,30,29,30,30,29, 30,29,30,29 ,0,4,8),
  14. 8=>array(0,30,29,29,30,30,29,30,29,30,30,29,30,0, 5,9),
  15. 9 =>配列(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10),
  16. 10=>配列(0,29,30 ,29,29,30,29,30,29,30,30,30,29,0,7,11),
  17. 11=>配列(6,30,29,30, 29,29,30,29 ,29,30,30,29,30,30,8,12),
  18. 12=>array(0,30,29,30,29,29,30,29,29, 30,30,29,30 ,0,9,1),
  19. 13=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0, 10,2),
  20. 14 =>配列(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3),
  21. 15=>配列(0,30,29 ,30,30,29,30,29,30,29,30,29,30,0,2,4),
  22. 16=>配列(0,29,30,29, 30,29,30,30 ,29,30,29,30,29,0,3,5),
  23. 17=>array(2,30,29,29,30,29,30,30,29, 30,30,29,30 ,29,4,6),
  24. 18=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0, 5,7),
  25. 19 =>array(7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8),
  26. 20=>配列(0,29,30 ,29,29,30,29,29,30,30,29,30,30,0,7,9),
  27. 21=>配列(0,30,29,30, 29,29,30,29 ,29,30,29,30,30,0,8,10),
  28. 22=>array(5,30,29,30,30,29,29,30,29, 29,30,29,30 ,30,9,11),
  29. 23=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0, 10,12),
  30. 24 =>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,1,1),
  31. 25=> array(4,30,29 ,30,29,30,30,29,30,30,29,30,29,30,2,2),
  32. 26=>array(0,29,29,30, 29,30,29,30 ,30,29,30,30,29,0,3,3),
  33. 27=>array(0,30,29,29,30,29,30,29,30, 29,30,30,30 ,0,4,4),
  34. 28=>array(2,29,30,29,29,30,29,29,30,29,30,30,30,30, 5,5),
  35. 29 =>配列(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6),
  36. 30=>配列(6,29,30 ,30,29,29,30,29,29,30,29,30,30,29,7,7),
  37. 31=>配列(0,30,30,29, 30,29,30,29 ,29,30,29,30,29,0,8,8),
  38. 32=>array(0,30,30,30,29,30,29,30,29, 29,30,29,30 ,0,9,9),
  39. 33=>array(5,29,30,30,29,30,30,29,30,29,30,29,29,30, 10,10),
  40. 34 =>配列(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11),
  41. 35=>配列(0,29,29 ,30,29,30,29,30,30,29,30,30,29,0,2,12),
  42. 36=>配列(3,30,29,29, 30,29,29,30 ,30,29,30,30,30,29,3,1),
  43. 37=>array(0,30,29,29,30,29,29,30,29, 30,30,30,29 ,0,4,2),
  44. 38=>array(7,30,30,29,29,30,29,29,30,29,30,30,29,30, 5,3),
  45. 39 =>配列(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4),
  46. 40=>配列(0,30,30 ,29,30,29,30,29,29,30,29,30,29,0,7,5),
  47. 41=>配列(6,30,30,29, 30,30,29,30 ,29,29,30,29,30,29,8,6),
  48. 42=>array(0,30,29,30,30,29,30,29,30, 29,30,29,30 ,0,9,7),
  49. 43=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0, 10,8),
  50. 44 =>配列(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9),
  51. 45=>配列(0,29,29 ,30,29,29,30,29,30,30,30,29,30,0,2,10),
  52. 46=>配列(0,30,29,29, 30,29,29,30 ,29,30,30,29,30,0,3,11),
  53. 47=>array(2,30,30,29,29,30,29,29,30, 29,30,29,30 ,30,4,12),
  54. 48=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0, 5,1),
  55. 49 =>配列(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2),
  56. 50=>配列(0,29,30 ,30,29,30,30,29,29,30,29,30,29,0,7,3),
  57. 51=>配列(0,30,29,30, 30,29,30,29 ,30,29,30,29,30,0,8,4),
  58. 52=>array(5,29,30,29,30,29,30,29,30, 30,29,30,29 ,30,9,5),
  59. 53=>array(0,29,30,29,29,30,30,29,30,30,29,30,29,0, 10,6),
  60. 54 =>配列(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7),
  61. 55=>配列(3,29,30 ,29,30,29,29,30,29,30,29,30,30,30,2,8),
  62. 56=>配列(0,29,30,29, 30,29,29,30 ,29,30,29,30,30,0,3,9),
  63. 57=>array(8,30,29,30,29,30,29,29,30, 29,30,29,30 ,29,4,10),
  64. 58=>array(0,30,30,30,29,30,29,29,30,29,30,29,30,0, 5,11),
  65. 59 =>配列(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12),
  66. 60=>配列(6,30,29 ,30,29,30,30,29,30,29,30,29,30,29,7,1),
  67. 61=>配列(0,30,29,30, 29,30,29,30 ,30,29,30,29,30,0,8,2),
  68. 62=>array(0,29,30,29,29,30,29,30,30, 29,30,30,29 ,0,9,3),
  69. 63=>array(4,30,29,30,29,29,30,29,30,29,30,30,30,29, 10,4),
  70. 64 =>配列(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5),
  71. 65=>配列(0,29,30 ,29,30,29,29,30,29,29,30,30,29,0,2,6),
  72. 66=>配列(3,30,30,30, 29,30,29,29 ,30,29,29,30,30,29,3,7)、
  73. 67=>配列(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8),
  74. 68=>配列(7,29, 30,29,30,30,29,30,29,30,29,30,29,30,5,9),
  75. 69=>array(0,29,30,29,30,29,30, 30,29,30,29,30,29,0,6,10),
  76. 70=>array(0,30,29,29,30,29,30,30,29,30,30,29, 30,0,7,11),
  77. 71=>配列(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12),
  78. 72=>配列(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1),
  79. 73=>配列(0,30, 29,30,29,29,30,29,29,30,30,29,30,0,10,2),
  80. 74=>array(4,30,30,29,30,29,29, 30,29,29,30,30,29,30,1,3),
  81. 75=>array(0,30,30,29,30,29,29,30,29,29,30,29, 30,0,2,4),
  82. 76=>array(8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5),
  83. 77=>配列(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6),
  84. 78=>配列(0,30, 29,30,30,29,30,30,29,30,29,30,29,0,5,7),
  85. 79=>array(6,30,29,29,30,29,30, 30,29,30,30,29,30,29,6,8),
  86. 80=>array(0,30,29,29,30,29,30,29,30,30,29,30, 30,0,7,9),
  87. 81=>配列(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10),
  88. 82=>配列(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11),
  89. 83=>配列(0,30, 29,30,29,29,30,29,29,30,29,30,30,0,10,12),
  90. 84=>array(10,30,29,30,30,29,29, 30,29,29,30,29,30,30,1,1),
  91. 85=>array(0,29,30,30,29,30,29,30,29,29,30,29, 30,0,2,2),
  92. 86=>配列(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3),
  93. 87=>配列(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4),
  94. 88=>配列(0,30, 29,30,29,30,29,30,30,29,30,30,29,0,5,5),
  95. 89=>array(0,30,29,29,30,29,29, 30,30,29,30,30,30,0,6,6),
  96. 90=>array(5,29,30,29,29,30,29,29,30,29,30,30, 30,30,7,7),
  97. 91=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8),
  98. 92=>配列(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9),
  99. 93=>配列(3,29, 30,30,29,30,29,30,29,29,30,29,30,29,10,10),
  100. 94=>array(0,30,30,30,29,30,29, 30,29,29,30,29,30,0,1,11),
  101. 95=>array(8,29,30,30,29,30,29,30,30,29,29,30, 29,30,2,12),
  102. 96=>array(0,29,30,29,30,30,29,30,29,30,30,29,29,0,3,1),
  103. 97=>配列(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2),
  104. 98=>配列(5,30, 29,29,30,29,29,30,30,29,30,30,29,30,5,3),
  105. 99=>array(0,30,29,29,30,29,29, 30,29,30,30,30,29,0,6,4),
  106. 100=>array(0,30,30,29,29,30,29,29,30,29,30,30, 29,0,7,5),
  107. 101=>配列(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6),
  108. 102=>配列(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7),
  109. 103=>配列(0,30, 30,29,30,30,29,30,29,29,30,29,30,0,10,8),
  110. 104=>array(2,29,30,29,30,30,29, 30,29,30,29,30,29,30,1,9),
  111. 105=>array(0,29,30,29,30,29,30,30,29,30,29,30, 29,0,2,10),
  112. 106=>array(7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11),
  113. 107=>配列(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12),
  114. 108=>配列(0,30, 29,29,30,29,29,30,29,30,30,29,30,0,5,1),
  115. 109=>array(5,30,30,29,29,30,29, 29,30,29,30,29,30,30,6,2),
  116. 110=>array(0,30,29,30,29,30,29,29,30,29,30,29, 30,0,7,3),
  117. 111=>配列(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4),
  118. 112=>配列(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5),
  119. 113=>配列(0,30, 29,30,29,30,30,29,30,29,30,29,30,0,10,6),
  120. 114=>array(9,29,30,29,30,29,30, 29,30,30,29,30,29,30,1,7),
  121. 115=>array(0,29,30,29,29,30,29,30,30,30,29,30, 29,0,2,8),
  122. 116=>配列(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9),
  123. 117=>配列(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10),
  124. 118=>配列(0,29, 30,29,30,29,29,30,29,30,29,30,30,0,5,11),
  125. 119=>array(0,30,29,30,29,30,29, 29,30,29,29,30,30,0,6,12),
  126. 120=>array(4,29,30,30,30,29,30,29,29,30,29,30, 29,30,7,1)
  127. );
  128. ##############################
  129. #农历天干
  130. var $ mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"); #农历地支
  131. var $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)",
  132. 「巳(蛇)」、「午(马)」、「未(羊)」、「申(猴)」、「酉(鸡)」、「戌(狗)」、「亥(猪)」; #农历月份
  133. var $mmonth=array("闰","正","二","三","四","五","六",
  134. "七","八","九" ,"十","十一","十二","月");
  135. var $mday=array("null","初一","初二","初三","初四" 、"初五"、"初六"、"初七"、"初八"、"初九"、"初十"、
  136. 「イレブン」、「十二」、「十三」、「十四」、「十五」、「十六」、「十七」、「十八」、「十九」、「二十」、
  137. 「二十一」、「二十- 2"、"23"、"24"、"25"、"26"、"27"、"28"、"29"、"30" ; = 0;
  138. var $twelve=0;
  139. function MyPub($c Year,$cMonth,$cDay)
  140. {
  141. $total=11;#1900 年 12 月 21 日までの太陽暦の合計日数
  142. $mtotal=0 ;#旧暦 合計日数
  143. for ($y=1901;$y {
  144. $total+=365;
  145. if ($y%4==0) $total ++;
  146. }
  147. #現在の年を追加します
  148. スイッチの月($cMonth){
  149. case 12:
  150. $total+=30;
  151. case 11:
  152. $total+=31;
  153. case 10:
  154. $total+=30;
  155. case 9 :
  156. $total+=31 ;
  157. ケース 8:
  158. $total+=31;
  159. ケース 7:
  160. $total+=30;
  161. ケース 6:
  162. $total+=31;
  163. ケース 5:
  164. $total+=30;
  165. ケース 4 :
  166. $total+=31 ;
  167. case 3:
  168. $total+=28;
  169. case 2:
  170. $total+=31;
  171. }
  172. #現在の年がうるう年の場合は、1 日追加します
  173. if ($cyear% 4==0 および $cMonth>2)
  174. {
  175. $total++;
  176. }
  177. $total+=$cDay-1;
  178. ###################### #########
  179. #太陰暦の累積日数を使用して、太陽暦の日数を超えているかどうかを判断します
  180. for($j=0;$j<=120;$j++ )
  181. {
  182. $i=1;
  183. for($i=1;$i< =13;$i++)
  184. {
  185. $mtotal+=$this->everyCMonth[$j][$i];
  186. if ( $mtotal>=$total)
  187. {
  188. $flag=1;
  189. Break;
  190. }
  191. }
  192. if ($flag==1)break;
  193. }
  194. return array("m"=>$j,"d "=>$i,"t"=>$total,"n"= >$mtotal);
  195. }
  196. 関数 Cal($ Year,$Month,$Day)
  197. {
  198. $Par=$this- >MyPub($ Year,$Month,$Day);
  199. $md=$ this->everyCMonth[$Par["m"]][$Par["d"]]-($Par["n "]-$Par["t"]);
  200. $week=($Par[ "t"]+5)%7;
  201. if ($this->everyCMonth[$Par["m"]][0 ]<>0 および $this->everyCMonth[$Par["m" ]][0] {
  202. $mm=$Par["d"]-1 ;
  203. }else{
  204. $mm=$Par["d"];
  205. }
  206. if ($Par["d"]==$this->everyCMonth[$Par["d"]][0]+ 1 と $this->everyCMonth[$Par["d"]][0] <>0)
  207. {
  208. $cMonth=$this->mmonth[0].$this->mmonth[$ mm];#閏月
  209. }else{
  210. $cMonth=$this->mmonth[ $mm].$this->mmonth[13];
  211. }
  212. return array("year"=>$this- >mten[$this->everyCMonth[$Par["m"]][14 ]].$this->mtwelve[$this->everyCMonth[$Par["m"]][15]] ,
  213. "月"=>$cMonth,
  214. "日"=>$this- >mday[$md],
  215. "週"=>$week);
  216. }
  217. }
  218. /////
  219. $test=new Calendar;
  220. $ Year=$test->Cal(2004, 2,20);
  221. echo $ Year["year"]."year".$ Year["month"].$ Year を呼び出します。 ["日"]."週".$年["週"];
  222. ?> ;
  223. コードをコピー

PHP
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。