你需要在給出的年份中找到復(fù)活節(jié)的月份和日期。
下面的函數(shù)返回?cái)?shù)組有兩個(gè)要素:復(fù)活節(jié)的月份( 1-12 )和日期。如果沒有給出任何參數(shù),給出的結(jié)果是當(dāng)前的一年。這是 在CoffeeScript 的匿名公歷算法實(shí)現(xiàn)的。
gregorianEaster = (year = (new Date).getFullYear()) ->
a = year % 19
b = ~~(year / 100)
c = year % 100
d = ~~(b / 4)
e = b % 4
f = ~~((b + 8) / 25)
g = ~~((b - f + 1) / 3)
h = (19 * a + b - d - g + 15) % 30
i = ~~(c / 4)
k = c % 4
l = (32 + 2 * e + 2 * i - h - k) % 7
m = ~~((a + 11 * h + 22 * l) / 451)
n = h + l - 7 * m + 114
month = ~~(n / 31)
day = (n % 31) + 1
[month, day]
Javascript 中的月份是 0-11 。getMonth() 查找的是三月的話將返回?cái)?shù)字 2 ,這個(gè)函數(shù)會(huì)返回 3 。如果你想要這個(gè)功能是一致的,你可以修改這個(gè)函數(shù)。
該函數(shù)使用~~符號(hào)代替來 Math.floor() 。
gregorianEaster() # => [4, 24] (April 24th in 2011)
gregorianEaster 1972 # => [4, 2]