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