公式:
$W = (int($Y-1) + int(($Y-1)/4) - int(($Y-1)/100) + int(($Y-1)/400) + int(13*($M+1)/5)+$d)%7
當然,要注意1月和2月已經被當成了上一年的13月和14月,因此在計算1月和2月的日子
的星期時,除了M要按13或14算,年份Y也要減一。比如,1976年1月27日是星期二,用這
個公式來算,有:
W = (1975-1) + [(1975-1)/4] - [(1975-1)/100] + [(1975-1)/400] + [13*(13+1)/5] + 27
W = 1974 + 493.5 - 19.74 + 4.935 + 36.4 + 27 = ( 1974 + 493 - 19 + 4 + 36 +27 ) %7 = 2
公式參考:http://hi.baidu.com/934304050/blog/item/2d52d6efc277f0f1b2fb9588.html駱駝文 PERL:
#!/usr/bin/perl -w
if((! defined $ARGV[0])||
(! defined $ARGV[1])||
(! defined $ARGV[2])){
print "Input parameter too few!\n";
exit -1;
}
$Y=$ARGV[0];
$M=$ARGV[1];
$d=$ARGV[2];
if ($M <= 2){
$M += 12;
$Y--;
}
$W=(int($Y-1)+int(($Y-1)/4)-int(($Y-1)/100)+int(($Y-1)/400)+int(13*($M+1)/5)+$d)%7;
@weeks=("SUN","MON","TUE","WED","THU","FRI","SAT");
print "$ARGV[0]-$ARGV[1]-$ARGV[2] $weeks[$W]\n";
Metal-Compu-OTAKU?囧rz...

沒有留言:
張貼留言