简单
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数: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”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/day-of-the-week
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码
/**
* @param {number} day
* @param {number} month
* @param {number} year
* @return {string}
*/
var dayOfTheWeek = function (day, month, year) {
const weeks = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
];
if (month < 3) {
month = month + 12;
year--;
}
const c = parseInt(year.toString().slice(0, 2)); // 年份前两位数
const y = parseInt(year.toString().slice(2, 4)); // 年份后两位数
const w =
Math.floor(c / 4) -
2 * c +
y +
Math.floor(y / 4) +
Math.floor((13 * (month + 1)) / 5) +
day -
1;
const res = w >= 0 ? weeks[w % 7] : weeks[((w % 7) + 7) % 7];
return res;
};
const res = dayOfTheWeek(7, 3, 2003);
console.log(res);
思路:蔡勒公式
蔡勒公式。我们使用该公式所需要注意的有两点:
- 当月份month小于3时,month需要加上12;
- 当求出来的w小于0时,我们不能直接w%7,而是需要((w % 7) + 7) % 7。