
简单
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数: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。
