class WanNianLi(object):
def __init__(self):
self.wan_nian_li()
##判断是否闰年
def isleap(self, year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
##判断每个月有多少天
def get_month_days(self, year, month):
if month in [1, 3, 5, 7, 8, 10, 12]:
return 31
elif month in [4, 6, 9, 11]:
return 30
else:
if self.isleap(year):
return 28
else:
return 29
# 统计1900年1月1日到输入的day_now这天一共多少天
def sum_day(self, year_in, month_in, day_now, day_in):
'''
#计算1900年1月1日到输入的年月日的天数
:param year_in:
:param month_in:
:param day_in:
:return:
'''
# 计算今年1月1日到用户输入的月份的前一个月有多少天
day_long = 0
for i in range(1, month_in):
day_long += self.get_month_days(year_in, i)
# 再加上输入的月份的日子,按1号计算,到此为止计算完成所有的天数
day_long += day_in
# print('1月1日到%d月%d日有%d天'%(month_in,day_in,day_long))
# 计算1900年1月1日到输入的年月日的天数
day1900toNow = day_now + day_long
# print('1900年1月1日到%d年%d月%d日有%d天'%(year_in,month_in,day_in,day1900toNow))
return day1900toNow
# 获得查询的日子day_in是周几
def get_week(self, year_in, month_in, day_now, day_in):
'''
# 计算输入月的星期数,1900年1月1日是星期一
:param year_in:
:param month_in:
:param day_in:
:return:
'''
# 计算输入月的星期数,1900年1月1日是星期一
week = self.sum_day(year_in, month_in, day_now, day_in) % 7
if week == 0:
week = 7
# print("%d年%d月%d日是星期%s" % (year_in, month_in, day_in, week))
return week
def wan_nian_li(self):
year_in = int(input("InPut the Year:"))
month_in = int(input("InPut the Month:"))
# 判断是不是闰年
if self.isleap(year_in):
print("%d是闰年" % year_in)
else:
print("%d不是闰年" % year_in)
# 获取这个月有多少天数
day_num = self.get_month_days(year_in, month_in)
print("%d年%d月有%d天" % (year_in, month_in, day_num))
# 计算从1900到去年完整的年有多少天
day_now = 0
for i in range(1900, year_in):
if self.isleap(year_in):
day_now += 366
else:
day_now += 365
print("从1900年到%d年有%d天" % (year_in, day_now))
##格式化
print("日\t一\t二\t三\t四\t五\t六\t")
day_week = self.get_week(year_in, month_in, day_now, 1) # 这个月的1号是周几
print("\t" * day_week, end='') # 这个月的1号是周几,就在前面加几个"\t"
for day in range(1, self.get_month_days(year_in, month_in) + 1):
print(day, '\t', end='')
if self.get_week(year_in, month_in, day_now, day) == 6: # 如果是周六就换行
print()
if __name__ == '__main__':
WanNianLi()
python生成某年某月日历
最新推荐文章于 2023-12-02 23:07:39 发布