my ($weekday_num, $weekday) = weekday( D => 23, M => 11, Y => 2003 ); print "$weekday_num / $weekday", "\n"; sub weekday { my %Params = @_; my $yyyy = $Params{Y}; my $mm = $Params{M}; my $dd = $Params{D}; my $cc = substr($yyyy, 0, 2); my $yy = substr($yyyy, 2, 2); # print "$mm/$dd/$yyyy - $cc/$yy\...\n"; my $mod_dd = $dd % 7; # print "> $dd (dd) % 7 = $mod_dd\n"; if ($mm == 1 or $mm == 2) { if ((($yy % 4) == 0 && ($yy % 100) != 0) or ($yy % 400) == 0) { $mm += 12; } } ##### CALCULATING TABLE 1: my $h_month = 0; $h_month = 0 if $mm == 8 or ($mm == 14); $h_month = 1 if $mm == 2 or ($mm == 3) or ($mm == 11); $h_month = 2 if $mm == 6; $h_month = 3 if $mm == 9 or ($mm == 12); $h_month = 4 if $mm == 4 or ($mm == 7) or ($mm == 13); $h_month = 5 if $mm == 1 or ($mm == 10); $h_month = 6 if $mm == 5; $mm -= 12 if $mm > 12; my $table1 = $mod_dd + $h_month; # print "> [Table 1] $mod_dd + $h_month (h_month) = $table1\n"; ##### CALCULATING TABLE 2: my $year2 = ($yy * 1.25) % 7; # print "> ($yy * 1.25) % 7 = $year2\n"; my $ccTmp = (($cc - 1) % 4) +1; my $century2 = 0; if ($ccTmp == 4) { $century2 = 2 } else { $century2 = 9 - 2 * $ccTmp } my $table2 = $century2 + $year2; # print "> [Table 2] $century2 (century2) + $year2 (year2) = $table2\n"; my $wd = ($table1 + $table2) % 7; my @weekdays = ('Sa', 'So', 'Mo', 'Tu', 'We', 'Th', 'Fr'); my @weekdays_unix = (6, 7, 1, 2, 3, 4, 5); ($weekdays_unix[$wd], $weekdays[$wd]); } # // {%WRAPPER _|EQ|_ "_c_doc__w_plain.txt"%} # // {%PREVENT_LAYOUT_PROCESS _|EQ|_ "0"%}