53 lines
1.1 KiB
Python
53 lines
1.1 KiB
Python
|
# Based on https://github.com/AllAlgorithms, python/algorithms/math/zellers_birthday.py
|
||
|
|
||
|
|
||
|
def zeller(d: int, m: int, y: int) -> str:
|
||
|
assert abs(d) >= 1
|
||
|
assert abs(m) >= 1
|
||
|
assert 0 <= abs(y) <= 99 or 1000 <= abs(y) <= 3000
|
||
|
|
||
|
d = abs(d)
|
||
|
m = abs(m)
|
||
|
y = abs(y)
|
||
|
if d > 31:
|
||
|
d = d % 31 + 1
|
||
|
if m > 12:
|
||
|
m = m % 12 + 1
|
||
|
if y < 100 and y < 23:
|
||
|
y = 2000 + y
|
||
|
if y < 100 and y >= 23:
|
||
|
y = 1900 + y
|
||
|
|
||
|
days = {
|
||
|
'0': 'Sunday',
|
||
|
'1': 'Monday',
|
||
|
'2': 'Tuesday',
|
||
|
'3': 'Wednesday',
|
||
|
'4': 'Thursday',
|
||
|
'5': 'Friday',
|
||
|
'6': 'Saturday'
|
||
|
}
|
||
|
|
||
|
# m = int(bday[0] + bday[1])
|
||
|
# d = int(bday[3] + bday[4])
|
||
|
# y = int(bday[6] + bday[7] + bday[8] + bday[9])
|
||
|
|
||
|
if m <= 2:
|
||
|
y = y - 1
|
||
|
m = m + 12
|
||
|
c = int(str(y)[:2])
|
||
|
k = int(str(y)[2:])
|
||
|
|
||
|
t = int(2.6 * m - 5.39)
|
||
|
u = int(c / 4)
|
||
|
v = int(k / 4)
|
||
|
x = d + k
|
||
|
z = t + u + v + x
|
||
|
w = z - (2 * c)
|
||
|
|
||
|
f = round(w % 7)
|
||
|
|
||
|
for i in days:
|
||
|
if f == int(i):
|
||
|
return days[i]
|