It it now a leap year?
Antonio Olivares
olivares14031 at yahoo.com
Thu Aug 9 00:52:01 UTC 2007
> ----- Original Message ----
> From: Karl Larsen <k5di at zianet.com>
> To: For users of Fedora <fedora-list at redhat.com>
> Sent: Wednesday, August 8, 2007 5:07:49 PM
> Subject: Re: It it now a leap year?
>
> Mike - EMAIL IGNORED wrote:
> > On Thu, 09 Aug 2007 06:02:27 +0930, Tim wrote:
> >
> >> Andrew Parker:
> >>>> For bash the following will display 061 if its currently a leap year,
> >>>> 060 otherwise
> >>>>
> >>>> date -d "$(date +%Y)/03/01" +%j
> >> Kevin J. Cummings:
> >>> It doesn't work with dates after 2037/03/01 ....
> >> Leaving you with thirty years to develop a solution, or spend a few
> >> minutes pondering whether to bother... ;-)
> >>
> >> But seriously, although some might think you don't need to worry about
> >> such things, there are programs that will need to do some work using a
> >> date from the future. The matter is more urgent than immediately
> >> obvious.
> >>
> > [...]
> >
> > My program deals only with the present and the immediate past.
> > Since in 30 years I hope to celebrate (?) my 98th, it would be
> > quite interesting to see if the problem still concerns me. :)
> >
> > Mike.
> >
> >
> In a terminal type $cal 2 2008 and you will see February has 29 days
> when it is leap year according to Google. Do $cal 2 2007 and you will
> see this:
>
> [karl at k5di ~]$ cal 2 2007
> February 2007
> Su Mo Tu We Th Fr Sa
> 1 2 3
> 4 5 6 7 8 9 10
> 11 12 13 14 15 16 17
> 18 19 20 21 22 23 24
> 25 26 27 28
>
> So no leap year in 2007
>
>
> --
>
> Karl F. Larsen, AKA K5DI
> Linux User
> #450462 http://counter.li.org.
>
> --
I like your solution Karl. Not to make less of the other answers provided. Rick provided a C+ program which is awesome. I like all the answers. But Karl's way of looking at it, in a leap year February has 29 days, so check by generating a calendar for the month of February month 2 and the year and if it has 29 days, it is a leap year, if it does not then no leap year. No need to worry about if the year ends in two zeros, which is divisibe by 100 without a remainder. If the number of the year ends in a 4,8,12,16,20,24, any multiple of 4, it is a leap year. There is a rule
cal 2 year where year is a number from 1 to 9999 after that the program does not work.
1700 is a leap year, 1704,1708,1712,1716, ... and so on
The rule
if year modulo 400 is 0 then leap
else if year modulo 100 is 0 then no_leap
else if year modulo 4 is 0 then leap
else no_leap
where modulo is the remainer when the year divided by 400 is 0, leap year
else if the remainder is zero when the year is divided by a 100, leap year
else if the remainder is zero when the year is divided by 4, then leap yaer
else no leap year
[olivares at localhost ~]$ cal --help
cal: invalid option -- -
usage: cal [-13smjyV] [[month] year]
[olivares at localhost ~]$ cal 99999
cal: illegal year value: use 1-9999
[olivares at localhost ~]$ cal 2 1700
February 1700
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29
[olivares at localhost ~]$ cal 2 1704
February 1704
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29
[olivares at localhost ~]$ cal 2 1708
February 1708
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29
[olivares at localhost ~]$ cal 2 1712
February 1712
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29
[olivares at localhost ~]$
..., every 4 years, there is a guaranted leap year! Unless we die of course, there is no leap year for us.
Great solution Karl!
Regards,
Antonio
____________________________________________________________________________________
Be a better Heartthrob. Get better relationship answers from someone who knows. Yahoo! Answers - Check it out.
http://answers.yahoo.com/dir/?link=list&sid=396545433
More information about the fedora-list
mailing list