juanjo-jaramillo-mZnx9429i94-unsplash.jpg
简单
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数: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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码

  1. /**
  2. * @param {number} day
  3. * @param {number} month
  4. * @param {number} year
  5. * @return {string}
  6. */
  7. var dayOfTheWeek = function (day, month, year) {
  8. const weeks = [
  9. "Sunday",
  10. "Monday",
  11. "Tuesday",
  12. "Wednesday",
  13. "Thursday",
  14. "Friday",
  15. "Saturday",
  16. ];
  17. if (month < 3) {
  18. month = month + 12;
  19. year--;
  20. }
  21. const c = parseInt(year.toString().slice(0, 2)); // 年份前两位数
  22. const y = parseInt(year.toString().slice(2, 4)); // 年份后两位数
  23. const w =
  24. Math.floor(c / 4) -
  25. 2 * c +
  26. y +
  27. Math.floor(y / 4) +
  28. Math.floor((13 * (month + 1)) / 5) +
  29. day -
  30. 1;
  31. const res = w >= 0 ? weeks[w % 7] : weeks[((w % 7) + 7) % 7];
  32. return res;
  33. };
  34. const res = dayOfTheWeek(7, 3, 2003);
  35. console.log(res);

思路:蔡勒公式

蔡勒公式。我们使用该公式所需要注意的有两点:

  1. 月份month小于3时,month需要加上12
  2. 求出来的w小于0时,我们不能直接w%7,而是需要((w % 7) + 7) % 7。