import numpy import datetime srtime1=input("年份和周数")#格式202223 srtime=int(srtime1) year_1= int(srtime / 100) day_2=int(int(srtime %100)*7)#一年几天 def gettime(year_1,day_2): fir_day = datetime.datetime(year_1,1,1) zone = datetime.timedelta(days=day_2-1) return datetime.datetime.strftime(fir_day + zone, "%Y-%m-%d") x=gettime(year_1,day_2) x=x.replace("-"," ") str=x a1=str[0:4] a2=str[5:7] a3=str[8:10] year=int(a1) month=int(a2) day=int(a3) def createCalendar(year, month): fmday = 0 mday = 0 firstD = 0 dateday = [] if month == 1: someday = datetime.datetime((year - 1), 12, 1) firstDay = someday.isoweekday() firstD = firstDay; for i in range(firstDay): dateday.append(" ") for i in range(1, 32): dateday.append(i) for i in range(1, 32): dateday.append(i) if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: for i in range(1, 30): dateday.append(i) else: for i in range(1, 29): dateday.append(i) elif month == 12: someday = datetime.datetime(year, 11, 1) firstDay = someday.isoweekday() firstD = firstDay; for i in range(1, 31): dateday.append(i) for i in range(1, 32): dateday.append(i) for i in range(1, 32): dateday.append(i) else: someday = datetime.datetime(year, (month - 1), 1) firstDay = someday.isoweekday() firstD = firstDay; for i in range(firstDay): dateday.append(" ") for j in range((month - 1), (month + 2)): if ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0) and j == 2: for i in range(1, 30): dateday.append(i) elif j in [1, 3, 5, 7, 8, 10, 12]: for i in range(1, 32): dateday.append(i) elif j == 2: for i in range(1, 29): dateday.append(i) elif j in [4, 6, 9, 11]: for i in range(1, 31): dateday.append(i) if month in [1, 12, 8]: fmday = 31 mday = 31 elif month == 3 and ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0): fmday = 29 mday = 31 elif month == 3: fmday = 28 mday = 31 elif month in [4, 6, 9, 11]: fmday = 31 mday = 30 elif month in [5, 7, 10]: fmday = 30 mday = 31 elif month == 2 and ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0): fmday = 31 mday = 29 elif month == 2: fmday = 31 mday = 28 return dateday, fmday, mday, firstD - 1 dateday, fmday, mday, firstD = createCalendar(year, month) todayindex = dateday.index(day, (fmday + firstD), (fmday + mday + firstD) + 1) today = datetime.datetime(year, month, day) firstday = today.isoweekday(); lmonth = month lyear = year if firstday == 1: mo =day lmo = dateday[todayindex + 7] elif firstday == 2: mo = dateday[todayindex - 1] lmo = dateday[todayindex + 6] elif firstday == 3: mo = dateday[todayindex - 2] lmo = dateday[todayindex + 5] elif firstday == 4: mo = dateday[todayindex - 3] lmo = dateday[todayindex + 4] elif firstday == 5: mo = dateday[todayindex - 4] lmo = dateday[todayindex + 3] elif firstday == 6: mo = dateday[todayindex - 5] lmo = dateday[todayindex + 2] elif firstday == 7: mo = dateday[todayindex - 6] lmo = dateday[todayindex + 1] if mo <= day: if lmo < mo and month == 12: lmonth = 1 lyear = year + 1 elif lmo < mo: lmonth = month + 1 elif mo > day: if month == 1: lmonth = 1 month = 12 year = year - 1 fyear = year else: lmonth = month month = month - 1 print("本周一日期为:{}年{}月{}日".format(year, month, mo)) print("下周一日期为:{}年{}月{}日".format(lyear, lmonth,lmo))
python 给年周期 找准确的时间(本周一,下一周一)
于 2022-10-14 21:04:09 首次发布