Article 3324 of comp.lang.perl:
Xref: feenix.metronet.com comp.lang.perl:3324
Newsgroups: comp.lang.perl
Path: feenix.metronet.com!news.ecn.bgu.edu!wupost!howland.reston.ans.net!spool.mu.edu!olivea!apple.com!voder!berlioz.nsc.com!jedi!arielf
From:
[email protected] (Ariel Faigon)
Subject: Re: day of the week from date?
Message-ID: <
[email protected]>
Followup-To: comp.lang.perl
Summary: Zeller congruence in perl (repost)
Keywords: day-of-week, perl
Sender:
[email protected] (UseNet News account)
Reply-To:
[email protected]
Organization: National Semiconductor Corp.
References: <
[email protected]>
Date: Thu, 10 Jun 1993 21:11:04 GMT
Lines: 48
[email protected] (Yan K. Lau) just wrote:
: How can I figure out which day of the week it is (e.g. Wed) from a date
: (not necessarily today) in day month year format (e.g. 9 Jun 93)? Is this easy to do?
Here is a script posted by Carl Rigley to this newsgroup (almost three years ago. Wow).
which does this efficiently.
So the answer to this question is: Yes it is easy if you've read this newsgroup
since it was established or know how to search in the archives :-)
#!/usr/local/bin/perl
# From:
[email protected] (Carl Rigney)
# Summary: zeller's congruence
# Keywords: weekday perl subroutine
# Date: 2 Oct 90 17:21:14 GMT
# Organization: Advanced Micro Devices; Sunnyvale, CA
#
# Here's a simple subroutine to calculate Day of the Week using
# Zeller's Congruence, which I've found very useful. A lot of
# the temporary variables could be omitted by making it harder to read.
# usage: zeller yyyy mm dd
unless ($#ARGV == 2) {
print STDERR "Usage: $0 yyyy mm dd\n";
exit 1;
}
$day = &weekday(@ARGV);
print $day,"\n";
sub weekday {
local($year,$month,$day)=@_;
local($y,$m,$c,$yy,$z);
local(@wday) = ( "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" );
$y = $year;
$m = ($month + 10) % 12;
$y-- if ($m > 10);
$c = int ( $y / 100 );
$yy = $year % 100;
$z = ( int ( (26*$m - 2)/10) + $day + $yy + int($yy/4) + int ($c/4) - 2*
$c ) % 7;
return $wday[$z];
}
---
Ariel Faigon
[email protected]