Table of Contents

概要

  • 曜日の計算 (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

リンク