python – 找出它是否是闰年并相应地设置
作者:互联网
我有一个具有初始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 }))
编辑
与@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 }))
找到当月的最后一天.
解决方法:
另外,不要使用try / except来处理这个问题,而是使用if条件.就像是:
if calendar.isleap(year):
do_stuff
else:
do_other_stuff
标签:python,django,django-forms,leap-year 来源: https://codeday.me/bug/20190613/1234359.html