php怎么将农历转换成公历,PHP实现阳历到农历转换的类实例

本文实例讲述了PHP实现阳历到农历转换的类。分享给大家供大家参考。具体如下:

//PHP阳历到农历转换的一个类

class Calendar

{

//农历每月的天数

var $everyCMonth=array(

0=>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,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=>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=>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=>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,29,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,29,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=>array(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,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=>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),

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=>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=>array(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,29,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),

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=>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),

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","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",

"十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",

"廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十");//农历日

//赋给初值

//天干地支

var $ten=0;

var $twelve=0;

function MyPub($cYear,$cMonth,$cDay)

{

$total=11;//阳历总天数 至1900年12月21日

$mtotal=0;//阴历总天数

for ($y=1901;$y

{

$total+=365;

if ($y%4==0) $total ++;

}

//再加当年的几个月

switch ($cMonth){

case 12:

$total+=30;

case 11:

$total+=31;

case 10:

$total+=30;

case 9:

$total+=31;

case 8:

$total+=31;

case 7:

$total+=30;

case 6:

$total+=31;

case 5:

$total+=30;

case 4:

$total+=31;

case 3:

$total+=28;

case 2:

$total+=31;

}

//如果当年是闰年还要加一天

if ($cYear%4==0 and $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);

}

function 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 and $this->everyCMonth[$Par["m"]][0]

{

$mm=$Par["d"]-1;

}else{

$mm=$Par["d"];

}

if ($Par["d"]==$this->everyCMonth[$Par["d"]][0]+1 and $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]],

"month"=>$cMonth,

"day"=>$this->mday[$md],

"week"=>$week);

}

}

/调用

$test=new Calendar;

$Year=$test->Cal(2004,2,20);

echo $Year["year"]."年".$Year["month"].$Year["day"]."周".$Year["week"];

?>

希望本文所述对大家的php程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值