エントリー

カテゴリー「プログラム」の検索結果は以下のとおりです。

祝日判定プログラム

2000年~2020年の祝日を判定するプログラム。

<?php

$holiday = Array(
  '2000' => '0101,0110,0211,0320,0429,0503,0504,0505,0717,0918,0923,1009,1103,1123,1223',
  '2001' => '0101,0108,0211,0212,0320,0429,0430,0503,0504,0505,0716,0917,0923,0924,1008,1103,1123,1223,1224',
  '2002' => '0101,0114,0211,0321,0429,0503,0504,0505,0506,0715,0916,0923,1014,1103,1104,1123,1223',
  '2003' => '0101,0113,0211,0321,0429,0503,0504,0505,0721,0915,0923,1013,1103,1123,1124,1223',
  '2004' => '0101,0112,0211,0320,0429,0503,0504,0505,0719,0920,0923,1011,1103,1123,1223',
  '2005' => '0101,0110,0211,0320,0321,0429,0503,0504,0505,0718,0919,0923,1010,1103,1123,1223',
  '2006' => '0101,0102,0109,0211,0321,0429,0503,0504,0505,0717,0918,0923,1009,1103,1123,1223',
  '2007' => '0101,0108,0211,0212,0321,0429,0430,0503,0504,0505,0716,0917,0923,0924,1008,1103,1123,1223,1224',
  '2008' => '0101,0114,0211,0320,0429,0503,0504,0505,0506,0721,0915,0923,1013,1103,1123,1124,1223',
  '2009' => '0101,0112,0211,0320,0429,0503,0504,0505,0506,0720,0921,0922,0923,1012,1103,1123,1223',
  '2010' => '0101,0111,0211,0321,0322,0429,0503,0504,0505,0719,0920,0923,1011,1103,1123,1223',
  '2011' => '0101,0110,0211,0321,0429,0503,0504,0505,0718,0919,0923,1010,1103,1123,1223',
  '2012' => '0101,0102,0109,0211,0320,0429,0430,0503,0504,0505,0716,0917,0922,1008,1103,1123,1223,1224',
  '2013' => '0101,0114,0211,0320,0429,0503,0504,0505,0506,0715,0916,0923,1014,1103,1104,1123,1223',
  '2014' => '0101,0113,0211,0321,0429,0503,0504,0505,0506,0721,0915,0923,1013,1103,1123,1124,1223',
  '2015' => '0101,0112,0211,0321,0429,0503,0504,0505,0506,0720,0921,0922,0923,1012,1103,1123,1223',
  '2016' => '0101,0111,0211,0320,0321,0429,0503,0504,0505,0718,0919,0922,1010,1103,1123,1223',
  '2017' => '0101,0102,0109,0211,0320,0429,0503,0504,0505,0717,0918,0923,1009,1103,1123,1223',
  '2018' => '0101,0108,0211,0212,0321,0429,0430,0503,0504,0505,0716,0917,0923,0924,1008,1103,1123,1223,1224',
  '2019' => '0101,0114,0211,0321,0429,0503,0504,0505,0506,0715,0916,0923,1014,1103,1104,1123,1223',
  '2020' => '0101,0113,0211,0320,0429,0503,0504,0505,0506,0720,0921,0922,1012,1103,1123,1223'
);

if (strpos($holiday['2008'], '0101') === false) {
  echo '祝日ではありません。';
} else {
  echo '祝日です。';
}

?>

これを実行すると2008年1月1日が祝日かどうか判定され、結果は 祝日です。 と表示されます。
処理内容は見たままです。何とも露骨な判定。その分、独自の祝日を追加するのは簡単(のハズ)。あと、調べてないけど判定速度は多分高速。

今回はカレンダー表示の際に、日付を平日の色で表示するべきか休日の色で表示するべきかを判定できれば十分なので、これでいくかなぁ…。

ちなみに、$holiday の内容はプログラムで自動作成しました。1年分ならともかく、20年分を手書きするのはさすがに面倒です…。

祝日の設定

この記事の続き。プログラムでカレンダー表示を行う際、祝日をどうやって求めるかを考え中。

KENTさんのコードを読んで、どんな流れで祝日判定を行うかは把握できたのですが…。どうしても、それなりに複雑なコードになりそうです。しかも、法改正されるたびにアルゴリズムの勉強をやり直さなければならない可能性があります。

これならいっそ、2000年~2020年くらいの祝日を、コード内で個別に定義して使った方が良さそう。もともと大した数では無いのだし。
そうすれば祝日の追加変更も簡単だし、個人的な休日も簡単に追加できて、むしろ便利かもしれません。

もちろん「2050年のカレンダーを表示すると祝日が設定されていない」…という状態にはなるけど、特に問題は無いでしょう。そもそも、その頃にはまた法律が変わってそう。(^^;

Amazon 商品情報&レビュー検索ツール

以前にPerlで作ったツールですが、PHP+Smartyで作り直してみた。

http://amazon.php-labo.net/

携帯からAmazonの商品情報やレビューを閲覧できるツール。公式サイトの携帯版はレビュー閲覧にログインが必要なので、ログイン無しでも見れるように作った…のですが、いつの間にかログイン無しで見れるようになってる…。

あああ、作った意味が無かった。まあ、APIを利用する練習だったと思っておこう…。

ちなみに、XMLの解析には XML Library を利用。(そのまま使うとNoticeが表示されたので、内部コードに少し手を加えた。)リンク先にも書かれているとおり、PHP5のSimpleXML関数はかなり良さ気ですが、利用サーバーはPHP4なのです。

夏ごろには、すべてのサーバーがPHP5に移行するのかなぁ…。

session.cache_limiter

現在、PHPプログラムを実行させる場合、.htaccessに以下の内容を記述しています。

.htaccessについて | PHP Labo

ここに session.cache_limiter の設定も加えようか考え中。

PHPのデフォルト設定はキャッシュを全然利用しないようなのですが、それによって、ページを移動するとフォームの入力内容が確実にクリアされます。
つまり、入力エラーがあったときなど、ブラウザの「戻る」で戻っても入力内容は残っていません。

キャッシュを利用できるようにするには、.htaccessに

php_value session.cache_limiter none

を追加しておけばOKです。(.htaccess以外でも制御できるけど。)
ただ、代わりに「掲示板などで記事を投稿しても、ページの再読み込みをしないと投稿が反映されない」という状態になる可能性があります。一長一短。

Perlで普通にプログラムを作るとキャッシュが有効な状態になるので、キャッシュを利用できるようにしておいたうえで「キャッシュさせたくない場合、各々で.htaccessを編集してください」としておくのがいいかなぁ…。

ちなみにこのサイトでは、少し前から session.cache_limiter の設定を追加しています。何か問題が起きないか実験も兼ねて。
今のところ、特に問題は無いっぽい。むしろキャッシュが有効な方が使いやすいかも。

春分の日

現在 Web Liberty と PHP Labo で配布しているプログラムは、祝日の設定が現在の法律に合っていない箇所があります。

で、少し前にも「春分の日の設定が間違っていますよー」とメッセージをいただきました。「春分の日も変わっていたのか…」と思いつつ、何日が正しいのか調べてみたら…

春分の日 - Wikipedia

春分の日は、3月20日から3月21日ごろ

ごろて。日は決まっていないのか…。(いまさら?)

1900年~2099年までの春分日の数学的な簡易な求め方も掲載されているけど、単純に条件分岐させていくしかないのかなぁ…。

追記

KENTさん作の Web Calen のコードを読んでみた。春分の日はもちろん、他の祝日も厳密に判定しているっぽい。流石だ。

大いに参考にさせていただきます。

ページ移動

ユーティリティ

カテゴリー

検索

エントリー検索フォーム
キーワード

過去ログ

過去ログ表示フォーム
キーワード

Feed