概要
- 曜日の計算 (Zellerの公式)
- ある日付の曜日を計算する。
- 計算できるのは、1582年10月15日(金)以降。
ソース
#!/usr/bin/perl
# 年月日の指定(例:1945年8月15日水曜日)
$year = 1945;
$month = 8;
$day = 15;
$wday = &calcZeller( $year, $month, $day );
$youbi = ( "Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday" )[ $wday ];
$monthname = ( "-", "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" )[ $month ];
printf( "%s, %02d %s %04d\n", $youbi, $day, $monthname, $year );
exit();
# 曜日の計算
# @param[in] $year 年
# @param[in] $month 月
# @param[in] $day 日
# @return 曜日 ( 0:日 1:月 2:火 3:水 4:木 5:金 6:土 )
sub calcZeller
{
my( $year, $month, $day ) = @_;
my( $year2, $month2 ) = ( $year, $month );
if ( $month == 1 || $month == 2 ) {
$year2--;
$month2 += 12;
}
return ( $year2 + int( $year2 / 4 ) - int( $year2 / 100 ) + int( $year2 / 400 )
+ int(( 13 * $month2 + 8 ) / 5 ) + $day ) % 7;
}
# EOF