mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 16:26:47 +08:00
27 lines
775 B
JavaScript
27 lines
775 B
JavaScript
// 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]
|
|
}
|