package Q6; import java.util.*; public class WeekDay { private int numberOfDays; public static final int JANUARY = 0; public static final int FEBRUARY = 0; public static final int MARCH = 0; public static final int APRIL = 0; public static final int MAY = 0; public static final int JUNE = 0; public static final int JULY = 0; public static final int AUGUST = 0; public static final int SEPTEMBER = 0; public static final int OCTOBER = 0; public static final int NOVEMBER = 0; public static final int DECEMBER = 0; public static final int SUNDAY = 0; public static final int MONDAY = 0; public static final int TUESDAY = 0; public static final int WEDNESDAY = 0; public static final int THURSDAY = 0; public static final int FRIDAY = 0; public static final int SATURDAY = 0; public String getWeekDay(int day, int month, int year) { int totalDaysSinceEpoch = daysSinceEpoch(day, month, year); this.puts("days since epoch: %d", totalDaysSinceEpoch); this.puts("weekday: %d", totalDaysSinceEpoch % 7); switch (totalDaysSinceEpoch % 7) { case 0: return "Sunday"; case 1: return "Monday"; case 2: return "Tuesday"; case 3: return "Wednesday"; case 4: return "Thursday"; case 5: return "Friday"; case 6: return "Saturday"; default: return "Unknown"; } } private int daysSinceEpoch(int day, int month, int year) { int days = (year - 1900) * 365; this.puts("days: %d", days); days += (year - 1900) / 4; this.puts("days: %d", days); if (isLeapYear(year) && (month == 1 || month == 2)) days -= 1; this.puts("days: %d", days); days += daysThisYearUpTo(day, month); this.puts("days: %d", days); return days; } private boolean isLeapYear(int year) { return year % 4 == 0; } private int daysThisYearUpTo(int day, int month) { int x = 0; for (int i = 1; i < month; i++) { this.puts("days in month: %d is %d", month, daysInMonth(month)); x += daysInMonth(i); } return x + day; } private int daysInMonth(int month) { switch (month) { case 1: return 31; case 2: return 28; case 3: return 31; case 4: return 30; case 5: return 31; case 6: return 30; case 7: return 31; case 8: return 31; case 9: return 30; case 10: return 31; case 11: return 30; case 12: return 31; default: return 0; } } private void puts(String format, Object... args) { System.out.println(String.format(format, args)); } public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Enter year:"); int year = in.nextInt(); System.out.println("Enter month:"); int month = in.nextInt(); System.out.println("Enter day:"); int day = in.nextInt(); System.out.println(new WeekDay().getWeekDay(day, month, year)); } }