1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { private static final int[] DAYS_PER_MONTH = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; private static final String[] DAY_OF_THE_WEEK = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
public String dayOfTheWeek(int day, int month, int year) { int resultDay = 4;
for (int i = 1971; i < year; i++) { resultDay += isLeapYear(i) ? 366 : 365; } for (int i = 1; i < month; i++) { resultDay += DAYS_PER_MONTH[i]; if (i == 2 && isLeapYear(year)) { resultDay += 1; } } resultDay += day;
return DAY_OF_THE_WEEK[resultDay % 7]; }
private boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; } }
|