给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数:day
、month
和 year
,分别表示日、月、年。
您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
。
示例 1:
输入:day = 31, month = 8, year = 2019 输出:"Saturday"
示例 2:
输入:day = 18, month = 7, year = 1999 输出:"Sunday"
示例 3:
输入:day = 15, month = 8, year = 1993 输出:"Sunday"
提示:
- 给出的日期一定是在
1971
到2100
年之间的有效日期。
直接调库或者应用蔡勒公式。
w
: 星期(从 Sunday 开始)c
: 年份前两位y
: 年份后两位m
: 月(m 的取值范围是 3 至 14,即在蔡勒公式中,某年的 1、2 月要看作上一年的 13、14 月来计算,比如 2003 年 1 月 1 日要看作 2002 年的 13 月 1 日来计算)d
: 日[ ]
: 向下取整mod
: 取余
class Solution:
def dayOfTheWeek(self, day: int, month: int, year: int) -> str:
return datetime.date(year, month, day).strftime('%A')
class Solution:
def dayOfTheWeek(self, d: int, m: int, y: int) -> str:
if m < 3:
m += 12
y -= 1
c = y // 100
y = y % 100
w = (c // 4 - 2 * c + y + y // 4 + 13 * (m + 1) // 5 + d - 1) % 7
return ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][w]
import java.util.Calendar;
class Solution {
private static final String[] WEEK = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
public static String dayOfTheWeek(int day, int month, int year) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, day);
return WEEK[calendar.get(Calendar.DAY_OF_WEEK) - 1];
}
}
class Solution {
public String dayOfTheWeek(int d, int m, int y) {
if (m < 3) {
m += 12;
y -= 1;
}
int c = y / 100;
y %= 100;
int w = (c / 4 - 2 * c + y + y / 4 + 13 * (m + 1) / 5 + d - 1) % 7;
return new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday"}[(w + 7) % 7];
}
}
class Solution {
public:
string dayOfTheWeek(int d, int m, int y) {
if (m < 3) {
m += 12;
y -= 1;
}
int c = y / 100;
y %= 100;
int w = (c / 4 - 2 * c + y + y / 4 + 13 * (m + 1) / 5 + d - 1) % 7;
vector<string> weeks = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
return weeks[(w + 7) % 7];
}
};
func dayOfTheWeek(d int, m int, y int) string {
if m < 3 {
m += 12
y -= 1
}
c := y / 100
y %= 100
w := (c/4 - 2*c + y + y/4 + 13*(m+1)/5 + d - 1) % 7
weeks := []string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
return weeks[(w+7)%7]
}