Notice: Undefined index: nen in /home/member/sitemix_55218/site/calendar_setumei2.php on line 5
Notice: Use of undefined constant Y - assumed 'Y' in /home/member/sitemix_55218/site/calendar_setumei2.php on line 6
Notice: Undefined index: tuki in /home/member/sitemix_55218/site/calendar_setumei2.php on line 8
Notice: Use of undefined constant n - assumed 'n' in /home/member/sitemix_55218/site/calendar_setumei2.php on line 9
Notice: Use of undefined constant Ynj - assumed 'Ynj' in /home/member/sitemix_55218/site/calendar_setumei2.php on line 11
Notice: Use of undefined constant Y - assumed 'Y' in /home/member/sitemix_55218/site/calendar_setumei2.php on line 12
Notice: Use of undefined constant n - assumed 'n' in /home/member/sitemix_55218/site/calendar_setumei2.php on line 13
Notice: Use of undefined constant t - assumed 't' in /home/member/sitemix_55218/site/calendar_setumei2.php on line 16
月 | 火 | 水 | 木 | 金 | 土 | 日 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 |
PHPスクリプトでカレンダー作成(休日と祝日と振り替え休日タイプ)
PHPのテクニックが少し向上したので 「休日」、「祝日」、「振り替え休日」をやってみました。 中でも、成人の日などは、 「1月の第2月曜」となっていてその年によって、日付が異なるので厄介 「海の日」、「体育の日」、「敬老の日」なども 同様に第2、第3月曜日になっていて厄介です もっと難しいのが「春分」「秋分」の日で 「国立天文台に基づき前年度の2月1日」に発表となってます 意味不明です(笑) でもよく調べると、「春分」「秋分」を求める式なるものがあるようです。。。。 祝日の作り方は、(($_SESSION["tuki"] == 1) && ($cnt == 1))なんて感じで 面倒くさいですが1つ、1つ手作業で入れました。 もっと賢い方法があるのかな?(Pear使うのは なしで) 例の「成人の日」ですが、カレンダーを「たて」、「よこ」カウントして 横が一番右に到達したときに「たて」を1増やせば、 第?週は 簡単にできます。
PHPカレンダープログラム(休日、祝日付き)の作り方
振り替え休日は、「次の日が月曜日なら振り替え」というプログラムになってます 1月2日が月曜なら「振り替え」という感じです。例えば・・・・・ (($_SESSION["tuki"] == 1) && ($cnt == 2) && ($orikaesi == 0)){//元旦振り替え とこのようになります。(1月2日が月曜なら振り替え休日なので・・・・) 【第?月曜日はどうやって計算するの?】 次は 問題の「成人の日」、「体育の日」、「敬老の日」、「海の日」ですが・・・ カレンダーの「たて」いわゆる 行を数えれば意外と簡単でした 前に作ったカレンダーに当てはめれば・・・・ (($_SESSION["tuki"] == 1) && ($tate == 2) && ($orikaesi == 0){ //成人の日 (($_SESSION["tuki"] == 7) && ($tate == 3) && ($orikaesi == 0)){ //海の日 (($_SESSION["tuki"] == 9) && ($tate == 3) && ($orikaesi == 0)){ //敬老の日 (($_SESSION["tuki"] == 10) && ($tate == 2) && ($orikaesi == 0)){ //体育の日 というようになります 最後に「春分」と「秋分」ですが どうも「地球の軌道」とかそのへんで、微妙に変るらしく・・・・ 「国立天文台に基づき前年度の2月1日」(爆)となっているのですが・・・・ 以下 春分、秋分の説明文 太陽は星々の間を移動していて、その通り道を「黄道」といいます。 また、地球の赤道を天にまで延長したものを「天の赤道」といいます。 黄道と天の赤道は、お互いが傾いているために2点で交わり、 その交点のうちの一方を「春分点」、もう一方を「秋分点」と呼びます。 そして、太陽が春分点・秋分点の上を通過する瞬間がそれぞれ「春分」「秋分」と定義され 「春分」「秋分」を含む日のことを、それぞれ「春分日」「秋分日」と呼ぶのです 前置きが長くなりましたが、調べていたら計算式がそのままのっていました $syunbun = (int)(20.69115 + 0.2421904 * $y2 - (int)($y2/4 + $y2/100 + $y2/400));//春分 $syuubun = (int)(23.09000 + 0.2421904 * $y2 - (int)($y2/4 + $y2/100 + $y2/400));//秋分 (($_SESSION["tuki"] == 3) && ($cnt == $syunbun)){//春分の日 (($_SESSION["tuki"] == 9) && ($cnt == $syuubunn)){//秋分の日
以上が「休日」、「祝日」、「振り替え休日」の作り方です
【休日、祝日付きカレンダーを作る】
ふつうのカレンダーに以上の要素を加えると作れます
(すこし面倒くさいですが・・・)
ふつうのカレンダーは 横(いわゆる列)しかカウントしてませんでしたが
休日、祝日、振り替え休日を入れる場合は、「たてをカウント」する事が
ポイントです。