ホームページ >バックエンド開発 >PHPチュートリアル >PHP世紀永久カレンダー_PHPチュートリアル
//Century Perpetual Calendar
#これが唯一の設定です - php ファイルの場所を入力してください
$file=$_SERVER['PHP_SELF'];
//各月の日数旧暦
$everymonth=array(
0=>array(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=>配列(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=>配列(0,30,30,29,30,30,29,29,30,29,30,29,30,0,2,6),
6=>配列(4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7),
7=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2),
26=>配列(0,29,29,30,29,30,29,30,30,29,30,30,29,0,3,3),
27=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(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=>配列(0,30 ,29,30,29,30,29,30,30,29,30,29,30,0,8,2),
62=>配列(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=>配列(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=>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=>配列(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=>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=>配列(4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3),
75=>配列(0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4),
76=>配列(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=>配列(6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8),
80=>配列(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=>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=>配列(10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1),
85=>配列(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=>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=>配列(0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6),
90=>配列(5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7),
91=>配列(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=>配列(0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11),
95=>配列(8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12),
96=>配列(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=>配列(0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4),
100=>配列(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=>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=>配列(2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9),
105=>配列(0,29,30,29,30,29,30,30,29,30,29,30,29,0,2,10),
106=>配列(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=>配列(5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2),
110=>配列(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=>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=>配列(9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7),
115=>配列(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=>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=>配列(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","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
「イレブン」、「十二」、「十三」、「十四」、「十五」、「十六」、「十七」、「十八」、「十九」、「二十」、
「二十一」、「二十- 2」、「23」、「24」、「25」、「26」、「27」、「28」、「29」、「30」);
/*
*初期値を割り当てる
*天の幹と地の枝
*/
$ten=0;
$twelve=0;
//Week
$week=5;
//旧暦の日
$md= 0 ;
//旧暦の月
$mm=0;
//1900年12月21日までの新暦の合計日数
$total=11;
//旧暦の合計日数
$mtotal=0;
/*
*日付を取得します
*/
$today=getdate();
//入力されていない場合は、今日の日付に設定します
if ($year=="" または $month== "" または ($year2020 )
または ($month12)){
$year=$today[year];
$month=$today[mon];
}
/*
*リクエストされた日付の太陽暦に基づいて計算します 合計日数 - 1900 年 12 月 21 日以降
*最初に年の合計を計算します
*/
for ($y=1901;$y<$year; $y++){
$total+=365;
%4==0) $total ++;
}
//今年の月数を加算します
switch ($月){
31;
ケース 10: ; ;
;
ケース 2:
$total +=31; 1 日を追加します
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;
ブレーク;
}
$i++; mtotal-$total);
//月初の営業日数
$k=$week;
//1年にわたるかどうか
switch ($month){
case 1:
case 3:
ケース 5:
ケース 7:
ケース 8:
ケース 10:
ケース 12:
$dd=31;
ブレーク;
ケース 4:
ケース 6:
ケース 9:
ケース 11:
$dd=30;
Break;
ケース 2:
if ($year%4==0){
$dd=29;
}else{
$dd=28;
}
Break;
}
//は一年を越えたかどうか
$ty=0;
if ((($everymonth[$j][0]<>0 および $i==13) または ($everymonth[$j][0]==0 および $i== 12))
$mtotal-$total<$dd) $ty=1;
?>
".$year."年".$month. "月
n";< font size="4">".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年
";".$mten[$everymonth[$j ][14]].$mtwelve[$everymonth[$j][15]]."/".$mten[$everymonth[$j+1][14]].$mtwelve[$everymonth[$j+1] ][15]]."年
";a | echo "
n"; ";
else
echo "
if ($ny<=2020)
echo "次の月>>< ;/a>
?>
echo "