php阴阳万年历转换的接口,用PHP写的阴阳万年历_PHP

##############################

# #

# #

# 世纪万年历 #

# #

# #

##############################

#这是唯一的设置-请输入php文件的位置

$file="http://127.0.0.1/s2m.php";

###########################################

#作者: 沈潋(S&S Lab) #

#版权声明: #

#作者开放版权 #

#允许无条件地使用本文件的全部或部分 #

#可作任何修改或增补 #

#如果您使用了本文件,请给作者写一封E-mail #

#如有问题欢迎同作者联系 #

#谢谢您的关注! #

###########################################

#农历每月的天数

$everymonth=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)

);

##############################

#农历天干

$mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸");

#农历地支

$mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)",

"巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");

#农历月份

$mmonth=array("闰","正","二","三","四","五","六",

"七","八","九","十","十一","十二","月");

#农历日

$mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",

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

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

##############################

#赋给初值

#天干地支

$ten=0;

$twelve=0;

#星期

$week=5;

#农历日

$md=0;

#农历月

$mm=0;

#阳历总天数 至1900年12月21日

$total=11;

#阴历总天数

$mtotal=0;

##############################

#获得当日日期

$today=getdate();

#如果没有输入,设为当日日期

if ($year=="" or $month=="" or ($year<1901 or $year>2020)

or ($month<1 or $month>12)){

$year=$today[year];

$month=$today[mon];

}

##############################

#计算到所求日期阳历的总天数-自1900年12月21日始

#先算年的和

for ($y=1901;$y

$total+=365;

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

}

#再加当年的几个月

switch ($month){

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 ($year%4==0 and $month>2){

$total++;

}

#顺便算出当月1日星期几

$week=($total+$week)%7;

##############################

#用农历的天数累加来判断是否超过阳历的天数

$flag1=0;#判断跳出循环的条件

$j=0;

while ($j<=120){

$i=1;

while ($i<=13){

$mtotal+=$everymonth[$j][$i];

if ($mtotal>=$total){

$flag1=1;

break;

}

$i++;

}

if ($flag1==1) break;

$j++;

}

##############################

#计算所求月份1号的农历日期

$md=$everymonth[$j][$i]-($mtotal-$total);

#月头空开的天数

$k=$week;

#是否跨越一年

switch ($month){

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

$dd=31;

break;

case 4:

case 6:

case 9:

case 11:

$dd=30;

break;

case 2:

if ($year%4==0){

$dd=29;

}else{

$dd=28;

}

break;

}

#是否跨越一年

$ty=0;

if ((($everymonth[$j][0]<>0 and $i==13) or ($everymonth[$j][0]==0 and $i==12))

and $mtotal-$total

?>

S2M

#打印年月抬头

echo "

".$year."年".$month."月

n";

if ($ty==0){

echo "

".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年

";

}else{

echo "

".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."/".$mten[$everymonth[$j+1][14]].$mtwelve[$everymonth[$j+1][15]]."年

";

}

?>

星期日星期一星期二星期三星期四星期五星期六

$day=1;

$line=0;

while ($day<=$dd){

echo "

n";

for ($s=0;$s<=6;$s++){

if ($k<>0 or $day>$dd){

#空格

echo "

 n";

$k--;

}else{

#设置字符颜色

switch ($s){

case 1:

case 2:

case 3:

case 4:

case 5:

$color="#000000";

break;

case 0:

$color="#FF0000";

break;

case 6:

$color="#008000";

break;

}

#生成中文农历

if ($md==1){#1日打印月份

if ($everymonth[$j][0]<>0 and $everymonth[$j][0]

$mm=$i-1;

}else{

$mm=$i;

}

if ($i==$everymonth[$j][0]+1 and $everymonth[$j][0]<>0) $chi=$mmonth[0].$mmonth[$mm];#闰月

else $chi=$mmonth[$mm].$mmonth[13];

}else{

$chi=$mday[$md];

}

echo "

$day $chin";

#下一天

$day++;

$md++;

if ($md>$everymonth[$j][$i]){

$md=1;

$i++;

}

if (($i>12 and $everymonth[$j][0]==0) or ($i>13 and $everymonth[$j][0]<>0)){

$i=1;

$j++;

}

}

}

echo "

n";

$line++;

}

?>

#补足空行

for ($l=1;$l<=(6-$line);$l++){

echo "

echo "

n";

echo "

an";

echo "

n";

echo "

n";

}

#打印上一月,下一月

$ly=$ny=$year;

$last=$month-1;

if ($last==0){

$last=12;

$ly--;

}

$next=$month+1;

if ($next==13){

$next=1;

$ny++;

}

if ($ly>=1901)

echo "

< n";

else

echo "

";

if ($ny<=2020)

echo "下一个月>>

n";

?>

echo "

n";

?>

年份:

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010

2009

2008

2007

2006

2005

2004

2003

2002

2001

2000

1999

1998

1997

1996

1995

1994

1993

1992

1991

1990

1989

1988

1987

1986

1985

1984

1983

1982

1981

1980

1979

1978

1977

1976

1975

1974

1973

1972

1971

1970

1969

1968

1967

1966

1965

1964

1963

1962

1961

1960

1959

1958

1957

1956

1955

1954

1953

1952

1951

1950

1949

1948

1947

1946

1945

1944

1943

1942

1941

1940

1939

1938

1937

1936

1935

1934

1933

1932

1931

1930

1929

1928

1927

1926

1925

1924

1923

1922

1921

1920

1919

1918

1917

1916

1915

1914

1913

1912

1911

1910

1909

1908

1907

1906

1905

1904

1903

1902

1901

月份:

1

2

3

4

5

6

7

8

9

10

11

12

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值