Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Valid Date Leap Year

This is my updated code, it still doesn't work. It returns day for all cases of Feb. 29th, when it should only return day if it is a leap year, if it is not a leap year 1 should be returned.

public int checkDay (int day)
{
    // For months with 30 days.
    if ((month == 4 || month == 6 || month == 9 || month == 11) && day <= 30)
        return day;
    // For months with 31 days.
    if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && (day <= 31))
        return day;
    // For leap years.
    // If February 29th...
    if (month == 2 && day == 29)
    {
        // Check if year is a leap year.
        if ((year%4 == 0 && year%100!=0) || year%400 == 0) 
        {
            // If year is a leap year return day as 29th.
            return day; 
        }
        // If not a leap year, return day as 1st.
        else return 1;
    }
    // If Date if February 1st through 28th return day, as it is valid.
    if (month == 2 && (day >= 1 && day <= 28))
        return day;
// Return day as 1st for all other cases.
return 1;
}
like image 217
annaisarobot Avatar asked Jan 26 '26 23:01

annaisarobot


2 Answers

Try GregorianCalendar http://docs.oracle.com/javase/6/docs/api/java/util/GregorianCalendar.html

GregorianCalendar gc = new GregorianCalendar();
if (gc.isLeapYear(year) ) 
like image 62
Tarsem Singh Avatar answered Jan 29 '26 12:01

Tarsem Singh


Try changing your code as

if (year%4==0&&(year%100!=0&&year%400==0)) 
like image 28
Woody Avatar answered Jan 29 '26 11:01

Woody



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!