Solved

# Determining a leap year

Posted on 1998-04-20
349 Views
Does anyone have a small snip of code that determines if a year is a leap year.

Or explain the rules that goven what determines if a year is a leap year.

Thanks
0
Question by:rock1
• 3
• 2
• 2

LVL 2

Accepted Solution

Slarti earned 10 total points
It's very simple: It's a leap year if the year number is divisible by 4. The exception is that if the year is divisible by 100, it is _not_ a leap year. The exception to that is that the year 2000 _will_ be a leap year (so will the year 3000 if you plan to live that long).

0

LVL 22

Expert Comment

I'm 99% sure--addmitidly not 100% sure that you missed one.  If the year is divisible by 400 it is a leap year (even though it is divisble by 100.)  Then If it is divisible by 2000, it is not a leap year (even though it is divisible by 400).

Can anyone confirm that?
0

Author Comment

I did some more research on this.

Every 4 years is a leap year (1992, 1996, ...).  But, as an exception,
every 100 years is not a leap year (2100, 2200, ...).  But as an exception
to this exception, every 400 years is a leap year (2000, 2400, ...).

0

LVL 22

Expert Comment

Well we got three opinions now.  None completely agree with the other.  But does it matter?  Over what time span does this matter?  Most likely the only exception year that will matter is the year 2000.  If so, the question then is, is it a leap year.
0

Author Comment

Yes, 2000 is a leap year.  Because it is divisible by 400.

Basically,

If the year is divisble by 4 it is a leap year.
But as an exception, every 100 years is not a leap year ( 2100, 2200 )
However, every 400 years is a leap year.  So 2000, 2400 are leap years.

Here is a code chunk I grabbed from someone.
bool bLeap = !( nYear % 4 ) && ( ( nYear % 100) || !( nYear % 400 ));

0

LVL 2

Expert Comment

This is probably true. I am not sure whether year 3000 is really a leap year. But, as nietod said, it doesn't really matter for any practical purpose.
0

Author Comment

3000 Would not be a multiple because even though it can be divided by 4 and a 100, it is not a multiple of 400.

0

## Featured Post

Unlike C#, C++ doesn't have native support for sealing classes (so they cannot be sub-classed). At the cost of a virtual base class pointer it is possible to implement a pseudo sealing mechanism The trick is to virtually inherit from a base class…
C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.