ある日付が何曜日なのか? 計算せずに、Perlの組み込み関数だけを使用して曜日を得る方法。timelocal関数とlocaltime関数を使えば簡単です。
にしし ふぁくとりー

にししの Perl/CGI Tips ふぁくとりー

にししふぁくとりーPerl/CGI Tips → このページ

日付関連TIPS

日付から曜日を割り出す

ある日付が一体何曜日なのか知りたいと思うことはありませんか? 計算で求めなくても、Perlの2つの関数を使えば、西暦で日付を指定するだけで曜日を得ることができます。

SOURCE 1

timelocal関数で西暦をエポック秒に変換し、localtime変数で各種日付情報に戻します。その際、曜日情報も得られます。
use Time::Local;
$time = timelocal($sec, $min, $hours, $mday, $mon - 1, $year);
($sec,$min,$hour,$mday,$mon,$year,$wday,$dmy) = localtime($time);
@wdays = ("日","月","火","水","木","金","土");
print "$year年$mon月$mday日は、" . $wdays[$wday] . "曜日です。\n";
timelocal関数を使うためには、最初に「use Time::Local;」と書いておく必要があります。

SOURCE 2

もっと短く書けば次のようになります。
$wday = (localtime( timelocal(0, 0, 0, $mday, $mon - 1, $year) ))[6];
@wdays = ("日","月","火","水","木","金","土");
print "$year年$mon月$mday日は、" . $wdays[$wday] . "曜日です。\n";
timelocalの返り値を変数に代入せずに、直接 localtimeの引数に渡しています。また、localtimeの返り値はたくさんあるので、そのうち必要な1つだけを得られるよう [6] を加えています。

SAMPLE SOURCE

ソースコード1 , 出力結果1
2004/02/18. Wed.

このページに記載の内容は、必ずしも正しいとは限りません。ご注意下さい。
もっと良い方法がありましたら、ぜひ、教えて頂けるとありがたいです。
製作者にししへのご連絡は、メールなどでお送り下さい。匿名のコメントも送信できます。
どのページへもリンクは歓迎します。複製・転載はご遠慮下さい。