easter.py (980B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dateutil\easter.py 2 import datetime 3 __all__ = ['easter', 4 'EASTER_JULIAN', 5 'EASTER_ORTHODOX', 6 'EASTER_WESTERN'] 7 EASTER_JULIAN = 1 8 EASTER_ORTHODOX = 2 9 EASTER_WESTERN = 3 10 11 def easter(year, method = EASTER_WESTERN): 12 if not 1 <= method <= 3: 13 raise ValueError('invalid method') 14 y = year 15 g = y % 19 16 e = 0 17 if method < 3: 18 i = (19 * g + 15) % 30 19 j = (y + y // 4 + i) % 7 20 if method == 2: 21 e = 10 22 if y > 1600: 23 e = e + y // 100 - 16 - (y // 100 - 16) // 4 24 else: 25 c = y // 100 26 h = (c - c // 4 - (8 * c + 13) // 25 + 19 * g + 15) % 30 27 i = h - h // 28 * (1 - h // 28 * (29 // (h + 1)) * ((21 - g) // 11)) 28 j = (y + y // 4 + i + 2 - c + c // 4) % 7 29 p = i - j + e 30 d = 1 + (p + 27 + (p + 6) // 40) % 31 31 m = 3 + (p + 26) // 30 32 return datetime.date(int(y), int(m), int(d))