用PHP写的阴阳万年历_PHP

Jun 01, 2016 pm 12:26 PM
array case 陰と陽

############################## 
#  # 
#  # 
#  世纪万年历  # 
#  # 
#  # 
############################## 

#这是唯一的设置-请输入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  ($year2020) 
or  ($month12)){ 
$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$i=1; 
while  ($i$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  ($dayecho  "n"; 
for  ($s=0;$sif  ($k0  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  "n"; 
#下一天 
$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++; 
}
?>
星期日星期一星期二星期三星期四星期五星期六
 $day    $chi
 
 
 

#补足空行 
for  ($l=1;$lecho  "n"; 
echo  "n"; 
echo  "n"; 
echo  "n"; 
echo  "
a
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  ($nyecho  "
下一个月>>

n"; 
?> 

echo  "
n"; 
?> 

年份: 
月份:月 




  

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C# の Array.Sort 関数を使用して配列を並べ替える C# の Array.Sort 関数を使用して配列を並べ替える Nov 18, 2023 am 10:37 AM

タイトル: Array.Sort 関数を使用して C# で配列を並べ替える例 本文: C# では、配列は一般的に使用されるデータ構造であり、多くの場合、配列を並べ替える必要があります。 C# には Array クラスが用意されており、このクラスには配列を簡単に並べ替えるための Sort メソッドがあります。この記事では、C# で Array.Sort 関数を使用して配列を並べ替える方法を示し、具体的なコード例を示します。まず、Array.Sort 関数の基本的な使用法を理解する必要があります。 Array.So

HMD Skyline に新しいカラーオプションと公式磁気ケースが追加されました HMD Skyline に新しいカラーオプションと公式磁気ケースが追加されました Aug 23, 2024 am 07:04 AM

HMD Skyline (Amazon で $499 で入手可能) が先月発売されたとき、ネオン ピンクとツイスト ブラックの 2 色で発売されました。これらに、ブルー トパーズと呼ばれる 3 番目の色が加わりました。 HMD Global は、ph の公式ケースも発表しました。

PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 Jun 27, 2023 pm 01:48 PM

PHP でプログラミングする場合、多くの場合、配列をマージする必要があります。 PHP には、配列のマージを完了するための array_merge() 関数が用意されていますが、配列内に同じキーが存在する場合、この関数は元の値を上書きします。この問題を解決するために、PHP は配列をマージして同じキーの値を保持できる array_merge_recursive() 関数を言語で提供し、プログラム設計をより柔軟にします。配列マージ

PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 Jun 26, 2023 pm 01:41 PM

PHP には、配列操作をより便利かつ高速にする強力な配列関数が多数あります。 2 つの配列を結合して連想配列にする必要がある場合、PHP の array_combine 関数を使用してこの操作を実行できます。この関数は、実際には、ある配列のキーを別の配列の値として新しい連想配列に結合するために使用されます。次に、PHP の array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法を説明します。 array_comb について学ぶ

スイッチケース判定変数 スイッチケース判定変数 Feb 19, 2024 am 08:04 AM

Switchcase では、変数を決定するための特定のコード例が必要です。プログラミングでは、さまざまな変数値に基づいてさまざまな操作を実行する必要があることがよくあります。 switchcase ステートメントは、変数の値に基づいて実行するコードのさまざまなブロックを選択できる便利な構造です。以下は、switchcase ステートメントを使用して変数のさまざまな値を決定する方法を示す具体的なコード例です。 #includeintmain(){

PHPのarray_fill()関数の使い方の詳しい説明 PHPのarray_fill()関数の使い方の詳しい説明 Jun 27, 2023 am 08:42 AM

PHP プログラミングにおいて、配列は大量のデータを簡単に処理できる非常に重要なデータ構造です。 PHP は配列関連の関数を多数提供しており、array_fill() はその 1 つです。この記事では、array_fill() 関数の使い方と実際の応用におけるヒントを詳しく紹介します。 1. array_fill() 関数の概要 array_fill() 関数の機能は、同じ値で構成される指定された長さの配列を作成することです。具体的には、この関数の構文は次のとおりです。

Java での ArrayIndexOutOfBoundsException の一般的な原因は何ですか? Java での ArrayIndexOutOfBoundsException の一般的な原因は何ですか? Jun 24, 2023 pm 10:39 PM

Java は、さまざまな開発分野で広く使用されている非常に強力なプログラミング言語です。ただし、Java プログラミング中に、開発者は ArrayIndexOutOfBoundsException 例外に遭遇することがよくあります。では、この異常の一般的な原因は何でしょうか? ArrayIndexOutOfBoundsException は、Java の一般的なランタイム例外です。これは、データにアクセスするときに、配列の添字が配列の範囲を超えていることを意味します。一般的な理由には次のようなものがあります。

PHP の array_change_key_case() 関数の使用方法の概要 PHP の array_change_key_case() 関数の使用方法の概要 Jun 27, 2023 am 10:43 AM

PHP プログラミングでは、配列は頻繁に使用されるデータ型です。 array_change_key_case() 関数など、多数の配列操作関数もあります。この関数は、配列内のキー名の大文字と小文字を変換して、データ処理を容易にすることができます。この記事では、PHP での array_change_key_case() 関数の使用方法を紹介します。 1. 関数の構文とパラメータ array_change_ke

See all articles