|
- #coding = utf-8
- #求任意输入日期是星期几
- year = int(input("year:"))
- month = int(input("month:"))
- day = int(input("day:"))
- #检查年份范围为1900到2100
- checkinput = True
- if year < 1900 or year > 2100:
- print("year must in 1900-2100")
- checkinput=False
- #检查月份为1到12
- if month<1 or month>12:
- print("month must in 1-12")
- checkinput = False
- #检查日期,根据月和年进行判断
- #先根据月份取得该月的日期最大值
- maxday = 31
- if month == 2:
- #判断是否为闰年
- maxday = 28
- if year%4==0 and not (year%100==0 and year%400!=0):
- maxday = 29
- elif month == 4 or month == 6 or month ==9 or month == 11:
- maxday = 30
- #检查日期范围为1到maxday
- if month<1 or month > maxday:
- print("day must in 1-",maxday)
- checkinput = False
- #只有所有检测是通过,才进行处理
- if checkinput:
- #从1980年开始循环,计算到输入日期之间间隔多少天
- #累计日期总数
- daycount = 0
- #年份
- theyear = 1900
- #月份
- themonth = 1
- #日期
- theday = 1
- #年份循环
- while theyear<year:
- adddays = 365
- #如果是闰年咋加366天
- if theyear%4==0 and not(theyear%100==0 and theyear%400!=0):
- adddays = 366
- daycount += adddays
- #年份加1
- theyear+=1
- #年份循环到输入的年
- #月份循环
- while themonth < month:
- adddays = 31
- if themonth == 2:
- #判断是否为闰年
- adddays = 28
- if year%4==0 and not (year%100==0 and year%400!=0):
- adddays = 29
- elif themonth == 4 or themonth==6 or themonth==9 or themonth==11:
- adddays=30
- #日期累加31天或者28天或者30天
- daycount+=adddays
- #月份加1
- themonth+=1
- #年份和月份循环到输入的年和月
- #日期相差
- adddays=day-theday
- #累计相差总天数
- daycount+=adddays
- print("daycount:",daycount)
- #根据累计相差总天数加上偏移量,对7求余,然后加1
- #1980年1月1日是星期一,偏移量为0
- week = (daycount + 0) % 7 + 1
- print("week",week)
- 这是源码
复制代码 |
|