找出它是否是闰年并相应地设定

The*_*eve 4 python django django-forms leap-year

我有一个初始的表格end_date.我有一个价值错误,因为今年是闰年,我们目前在二月.

我的代码有一个结束日30,但我无法弄清楚如何编写代码,如果它是一个闰年,并将初始end_date设置为正确的2月最后一天.

这是我的forms.py控制end_date初始值

class MaturityLetterSetupForm(forms.Form):
def __init__(self, *args, **kwargs):
    from datetime import datetime
    today = datetime.today()
    start_year = today.year
    start_month = today.month
    start_date = datetime(start_year, start_month, 1)
    try:
        end_date = datetime(start_year, start_month, 30)
    except ValueError:
        end_date = datetime(start_year, start_month, ?)

    super(MaturityLetterSetupForm, self).__init__(*args, **kwargs)
    self.fields['start_date'] = forms.DateField(initial=start_date.strftime("%B %d, %Y"),
        widget=forms.TextInput(attrs={'class':'datepicker', 'value': today }))

    self.fields['end_date'] = forms.DateField(initial=end_date.strftime("%B %d, %Y"),
        widget=forms.TextInput(attrs={'class':'datepicker', 'value': today }))
Run Code Online (Sandbox Code Playgroud)

编辑 在与@Paul交谈后,我的初始化成为:

def __init__(self, *args, **kwargs):
    from datetime import datetime
    import calendar
    today = datetime.today()
    start_year = today.year
    start_month = today.month
    start_date = datetime(start_year, start_month, 1)
    if calendar.isleap(start_year) and today.month == 2:
        end_date = datetime(start_year, start_month, calendar.mdays[today.month]+1)
    else:
        end_date = datetime(start_year, start_month, calendar.mdays[today.month])
    super(MaturityLetterSetupForm, self).__init__(*args, **kwargs)
    self.fields['start_date'] = forms.DateField(initial=start_date.strftime("%B %d, %Y"),
        widget=forms.TextInput(attrs={'class':'datepicker', 'value': today }))

    self.fields['end_date'] = forms.DateField(initial=end_date.strftime("%B %d, %Y"),
        widget=forms.TextInput(attrs={'class':'datepicker', 'value': today }))
Run Code Online (Sandbox Code Playgroud)

找到当月的最后一天.

Pau*_*sik 8

如何calendar.isleap(年)

另外,不要使用try/except来处理它,而是使用if条件.就像是:

if calendar.isleap(year):
    do_stuff
else:
   do_other_stuff
Run Code Online (Sandbox Code Playgroud)