Python 复活节换月

Python 复活节换月,python,calendar,Python,Calendar,我需要在21世纪的每个复活节星期天打印。我需要确定月份:4月,当天d不超过30;如果它更大,那么我需要将其转换为5月份的适当日期。例如,d=32将是m=5、d=2或5月2日 import calendar import datetime def easter(): for y in range(2001, 2101): m2 = 2 * (y % 4) m4 = 4 * (y % 7) m19 = 19 * (y % 19)

我需要在21世纪的每个复活节星期天打印。我需要确定月份:4月,当天
d
不超过30;如果它更大,那么我需要将其转换为5月份的适当日期。例如,
d=32
将是
m=5、d=2
或5月2日

import calendar
import datetime


def easter():
    for y in range(2001, 2101):
        m2 = 2 * (y % 4)
        m4 = 4 * (y % 7)
        m19 = 19 * (y % 19)
        v2 = (16 + m19) % 30
        v1 = (6 * v2 + m4 + m2) % 7
        p = v1 + v2
        d = 3 + p
        print ('Easter Sunday for the year', y, 'is',
               datetime.date(2015, m, 1).strftime('%B'),
               '{}.'.format(int(d)))


easter()

您只需进行一次调整:如果天数超过30,则增加4月至5月的月份数,并减少30天:

    if d <= 30:
        m, d = 4, d
    else:
        m, d = 5, d-30

    print("Easter Sunday for the year", y, "is",
          datetime.date(y, m, d).
             strftime('%B'), '{}.'.format(int(d)))

二月吃什么?现在是28或29岁……我需要一种方法来改变这个月。传统的复活节只在3月或4月。打印操作中的
2015
似乎有点出乎意料。是的,正统的复活节是“传统”的一部分。不过,我现在想起来,他们也可以在5月的第一周来。
Easter Sunday for the year 2073 is April 30.
Easter Sunday for the year 2074 is April 22.
Easter Sunday for the year 2075 is April 7.
Easter Sunday for the year 2076 is April 26.
Easter Sunday for the year 2077 is April 18.
Easter Sunday for the year 2078 is May 8.
...
Easter Sunday for the year 2088 is April 18.
Easter Sunday for the year 2089 is May 1.