Here’s a Python module with the Chinese calendar:

http://code.google.com/p/python-lunarda

Here’s code to find the date of Easter (take out the “self”):

http://code.activestate.com/recipes/576

>>> for year in range(1900, 2050):

... easter = LunarDate.fromSolarDate(*calc_easter(yea

... print easter.year, easter.month, easter.day

...

1900 3 16

1901 2 19

1902 2 21

1903 3 15

1904 2 18

1905 3 19

…

2010 2 20

2011 3 22

2012 3 18

2013 2 20

2014 3 21

2015 2 17

2016 2 19

2017 3 20

2018 2 16

2019 3 17

2020 3 20

…

2043 2 19

2044 3 20

2045 2 22

2046 2 18

2047 3 20

2048 2 23

2049 3 17

So, there are two different patterns here. One is where the Easter falls after the middle of the second lunar month. (The middle of the month is the full moon.) The other is where an extra month occurs between the Chinese new year and Easter. Easter is in the second lunar month for 79 of these 150 years, so a little more than half of the time.

Easter Sunday and Guanyin’s birthday match in 1901, 1918, 1945, 1972, 1989, 2016, 2023, and 2043.

Good Friday and Guanyin’s birthday match in 1902, 1909, 1929, 1932, 1956, 1959, 1980, 1986, 2007, 2027, and 2034.

Easter Saturday and Guanyin’s birthday match in 1912, 1915, 1939, 1942, 1969, 1983, 1996, 2010, 2013, 2037, and 2040.

Guanyin’s birthday falls somewhere in Holy Week in 1901, 1902, 1909, 1912, 1915, 1918, 1926, 1929, 1932, 1939, 1942, 1945, 1950, 1953, 1956, 1959, 1969, 1970, 1972, 1977, 1980, 1983, 1986, 1989, 1994, 1996, 1997, 2004, 2007, 2010, 2013, 2016, 2021, 2023, 2024, 2027, 2034, 2037, 2040, 2043, 2045, and 2048.

Easter Monday and Guanyin’s birthday match in 1904, 1907, 1921, 1928, 1931, 1934, 1948, 1951, 1958, 1975, 1978, 1985, 1999, 2002, 2005, 2026, 2029, and 2046.

The dates don’t repeat over the 19 year metonic cycle. The months nearly do, though. Over this range, the months that don’t match 19 years apart are 1917/1936, 1947/1966, and 1966/1985.

Is 19 a coincidence? Count the number of times the month matches for different offsets of years. The best matches below 100 are then: 0, 95, 76, 19, 38, 57, 87, 68, 84, 65, …

0 is trivial. 95, 76, 38, and 57 are all multiples of 19. The next best match is 87, which is quite a large number, and large numbers do better because there are fewer possible collisions. There is something to the metonic cycle.

## And leap months…

x31eq