这个Python的小案例是实现输入指定的日期,判断出输入日期当天的星期。
这个案例的思路是:
- 先输入指定的日期格式,并对日期进行切片处理,得到year,month,day;
- 输入月份的列表,包括闰年和平年的月份具体天数;
- 对输入的日期进行分类处理,20180101之前和20180101之后做出具体分析,具体如以下代码所示;
- year>=2018年时:首先判断年份是否是闰年,闰年天数加366,否则天数加365,在判断月份,如果当年是闰年,月份要按照month_list2相加,否则按照month_list1相加。
- year<2018年时:大致思路是一样的,具体可以看代码所示;
输入指定日期,计算当天是星期几
代码如下:
print("20180101是星期一,作为参考日期")
jisuan_riqi=input("请输入你要计算的日期(20180101):")
year=int(jisuan_riqi[:4])
month=int(jisuan_riqi[4:6])
day=int(jisuan_riqi[-2:])
month_list1=[31,28,31,30,31,30,31,31,30,31,30,31]
month_list2=[31,29,31,30,31,30,31,31,30,31,30,31]
#输入的年份大于等于2018年
if year>=2018:
year_days=0
for i in range(2018,year):
#先做出一个判断,判断年份是否是闰年
if (i%4==0 & (i%100!=0))|(i%400==0):
year_days+=366
else:
year_days+=365
month_days=0
if ((year % 4 == 0) & (year % 100 != 0)) | (year % 400 == 0):
for j in range(month - 1):
month_days += month_list2[j]
else:
for j in range(month-1):
month_days += month_list1[j]
total_days=year_days+month_days+day
# 相差天数与7取余,+1表明余数为0是周一
xingqi=(total_days-1)%7+1
print("你输入的日期 %s"%jisuan_riqi,"是周",xingqi)
#输入的年份小于2018年
else:
# 计算2018年之前的日期时,先将2018的一天作为初始,加入到总天数中
year_days=1
for i in range(2017,year,-1):
#先做出一个判断,判断年份是否是闰年,在对其进行天数的计算
if (i%4==0 & (i%100!=0))|(i%400==0):
year_days+=366
else:
year_days+=365
month_days=0
if (year % 4 == 0 & (year % 100 != 0)) | (year % 400 == 0):
for j in range(11, month - 2, -1):
month_days += month_list2[j]
else:
for j in range(11, month - 1, -1):
month_days += month_list1[j]
total_days=year_days+month_days-day
if (total_days)%7==0:
xingqi=(total_days)%7+1
else:
#余数为1是周7,余数为2是周6,所以8-余数
xingqi = 8-(total_days) % 7
print("你输入的日期 %s"%jisuan_riqi,"是周",xingqi)
结果如下:
20180101是星期一,作为参考日期
请输入你要计算的日期(20180101):20000103
你输入的日期 20000103 是周 1
20180101是星期一,作为参考日期
请输入你要计算的日期(20180101):20181219
你输入的日期 20181219 是周 3
20180101是星期一,作为参考日期
请输入你要计算的日期(20180101):20260806
你输入的日期 20260806 是周 4