static int calc_wday(int year, int month, int day) { int a, y, m; int wday; a = (14 - month) / 12; y = year + 4800 - a; m = month + 12 * a - 3; wday = day + (153*m+2)/5 + 365*y + y/4 - y/100 + y/400 + 2; wday = wday % 7; return wday; }
sub GetDayofWeek { my ($year, $month, $day) = @_; my @monthTable = (0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4); my @DayofWeek = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday); $year -= ($month < 3) ? 1: 0; return $DayofWeek[($year + $year / 4 - $year / 100 + $year / 400 + $monthTable[$month - 1] + $day) % 7]; }