蔡勒公式:求解任意日期是一周的第几天(周几、星期几)

2022-04-12 03:31:36
什么是蔡勒公式,如何确定某一天是一周的第几天,求解《1185. 一周中的第几天》

蔡勒公式

蔡勒公式

例题

一周中的第几天

给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数:day、month 和 year,分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。

答案

蔡勒公式解法
var dayOfTheWeek = function(day, month, year) {
  const h = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
  if (month === 1 || month === 2) {
    month += 12
    year--
  }
  const c = year / 100 | 0, y = year % 100
  const index = (y + (y / 4 | 0) + (c / 4 | 0) - c * 2 + (2.6 * (month + 1) | 0) + day - 1) % 7
  return h[index < 0 ? index + 7 : index]
};
天数取余
var dayOfTheWeek = function(day, month, year) {
  const h = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
  let days = (year - 1971) * 365 + ((year - 1 - 1968) / 4 | 0)
  const months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) months[1] = 29
  for (let i = 0; i < month - 1; i++) days += months[i]
  days += day
  return h[(days + 4) % 7]
};
JavaScript - API
var dayOfTheWeek = function(day, month, year) {
  const h = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
  return h[new Date(year + '-' + month + '-' + day).getDay()]
};