Implementing a GregorianDate Class Definition The Gregorian calendar is today\'s
ID: 3575223 • Letter: I
Question
Implementing a GregorianDate Class Definition The Gregorian calendar is today's internationally accepted civil calendar and is also known as the "Western calendar A Gregorian date is a date on the modern calendar. The Gregorian calendar was introduced in Febraury 1582. Definition A year is a leap year if it is either divisible 400 or it is divisible by 4 but not divisible by 100. So 2000 and 1996 were leap years. However, 1900 was not a leap year. package gregoriandemo Describes a date on the Gregorian calendar after 1582 e Cauthor Jane DoeExplanation / Answer
PROGRAM CODE:
GregorianDate.java
package gregoriandemo;
public class GregorianDate {
private int month;
private int year;
private int day;
public GregorianDate() {
this.month = 01;
this.day = 01;
this.year = 1970;
}
public GregorianDate(int m, int d, int y)
{
boolean isLeapYear = false;
if(y%400 == 0)
isLeapYear = true;
if(y < 1583 || m < 0 || m > 12 || d < 0 || d > 31 )
throw new IllegalArgumentException();
else if((isLeapYear && m == 2 && d>29) || ((d == 31) && (m == 4 || m == 6 || m == 9 || m == 11)) || (!isLeapYear && m == 2 && d > 28))
throw new IllegalArgumentException();
else
{
this.year = y;
this.day = d;
this.month = m;
}
}
public int getMonth()
{
return month;
}
public String getMonthName()
{
String monthName = "";
switch(this.month)
{
case 1: monthName = "January";
break;
case 2: monthName = "February";
break;
case 3: monthName = "March";
break;
case 4: monthName = "April";
break;
case 5: monthName = "May";
break;
case 6: monthName = "June";
break;
case 7: monthName = "July";
break;
case 8: monthName = "August";
break;
case 9: monthName = "September";
break;
case 10: monthName = "October";
break;
case 11: monthName = "November";
break;
case 12: monthName = "December";
break;
}
return monthName;
}
public int getDay()
{
return this.day;
}
public int getYear()
{
return this.year;
}
public String toString()
{
return (this.month<=9? "0" + this.month : this.month) + "/" + (this.day<=9? "0" + this.day : this.day) + "/" + this.year;
}
public void setGregorianDate(int m, int d, int y)
{
boolean isLeapYear = false;
if(y%400 == 0)
isLeapYear = true;
if(y < 1583 || m < 0 || m > 12 || d < 0 || d > 31 )
throw new IllegalArgumentException();
else if((isLeapYear && m == 2 && d>29) || ((d == 31) && (m == 4 || m == 6 || m == 9 || m == 11)) || (!isLeapYear && m == 2 && d > 28))
throw new IllegalArgumentException();
else
{
this.year = y;
this.day = d;
this.month = m;
}
}
}
GregorianDateDriver.java
package gregoriandemo;
public class GregorianDateDriver {
public static void main(String[] args) {
System.out.println(new GregorianDate(12, 31, 2017));
System.out.println(new GregorianDate());
System.out.println(new GregorianDate(11, 03, 1992).getMonthName());
// this will throw illegal argument exception
System.out.println("Providing invalid date");
System.out.println(new GregorianDate(13, 12, 2016));
}
}
OUTPUT:
12/31/2017
01/01/1970
November
Providing invalid date
Exception in thread "main" java.lang.IllegalArgumentException
at gregoriandemo.GregorianDate.<init>(GregorianDate.java:22)
at gregoriandemo.GregorianDateDriver.main(GregorianDateDriver.java:11)