Add Zeller's Congruence Algorithm in Math (#996)

This commit is contained in:
merelymyself
2022-04-27 20:49:12 +08:00
committed by GitHub
parent 7881cb5f16
commit 5641b6faea
2 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,26 @@
// Zeller's Congruence Algorithm finds the day of the week from the Gregorian Date. Wikipedia: https://en.wikipedia.org/wiki/Zeller%27s_congruence
export const zellersCongruenceAlgorithm = (day, month, year) => {
if (typeof day !== 'number' || typeof month !== 'number' || typeof year !== 'number') {
throw new TypeError('Arguments are not all numbers.')
}
const q = day
let m = month
let y = year
if (month < 3) {
m += 12
y -= 1
}
day =
(q + Math.floor(26 * (m + 1) / 10) + (y % 100) + Math.floor((y % 100) / 4) + Math.floor(Math.floor(y / 100) / 4) + (5 * Math.floor(y / 100))) %
7
const days = [
'Saturday',
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday'
]
return days[day]
}