diff options
| author | mo <mo.khan@gmail.com> | 2019-07-13 14:39:11 -0600 |
|---|---|---|
| committer | mo <mo.khan@gmail.com> | 2019-07-13 14:39:11 -0600 |
| commit | 61a3744ec59c8fcf5b2766de920a8fead37dc2b3 (patch) | |
| tree | b9f1a951008a4c86f5c6ea61b73778ab3684e4bc | |
| parent | f495db1a35be3b0cd9692b87171a056afc1c5259 (diff) | |
first try at implementing the algorithm
| -rw-r--r-- | src/Q6/WeekDay.java | 70 |
1 files changed, 69 insertions, 1 deletions
diff --git a/src/Q6/WeekDay.java b/src/Q6/WeekDay.java index a4e27c8..003fafa 100644 --- a/src/Q6/WeekDay.java +++ b/src/Q6/WeekDay.java @@ -24,6 +24,74 @@ public class WeekDay { public static final int SATURDAY = 0; public String getWeekDay(int day, int month, int year) { - return ""; + switch (daysSinceEpoch(day, month, year) % 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; + days += (year - 1900) / 4; + if (isLeapYear(year) && (month == 1 || month == 2)) + days -= 1; + days += daysThisYearUpTo(day, month); + 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++) + x += daysInMonth(month); + 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; + } } } |
