python给定任意日期,求上周本周下周周一日期
#@Software : PyCharm
代码:
#-*-codeing = utf-8 -*-
#@Time : 2020/11/18 9:02
#@Author : 宋俊育
#@File : 4.给定任意日期,求上周本周下周周一日期.py
# 导入datetime库
from datetime import datetime
def createCalendar(year, month):
fmday = 0
mday = 0
firstD = 0
dateday = []
if month == 1:
someday = 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(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(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
year = eval(input("请输入年份:"))
month = eval(input("请输入月份:"))
day = eval(input("请输入日:"))
dateday, fmday, mday, firstD = createCalendar(year, month)
todayindex = dateday.index(day, (fmday + firstD), (fmday + mday + firstD) + 1)
today = datetime(year, month, day)
firstday = today.isoweekday();
fmonth = month
lmonth = month
fyear = year
lyear = year
if firstday == 1:
mo = day
fmo = dateday[todayindex - 7]
lmo = dateday[todayindex + 7]
elif firstday == 2:
mo = dateday[todayindex - 1]
fmo = dateday[todayindex - 8]
lmo = dateday[todayindex + 6]
elif firstday == 3:
mo = dateday[todayindex - 2]
fmo = dateday[todayindex - 9]
lmo = dateday[todayindex + 5]
elif firstday == 4:
mo = dateday[todayindex - 3]
fmo = dateday[todayindex - 10]
lmo = dateday[todayindex + 4]
elif firstday == 5:
mo = dateday[todayindex - 4]
fmo = dateday[todayindex - 11]
lmo = dateday[todayindex + 3]
elif firstday == 6:
mo = dateday[todayindex - 5]
fmo = dateday[todayindex - 12]
lmo = dateday[todayindex + 2]
elif firstday == 7:
mo = dateday[todayindex - 6]
fmo = dateday[todayindex - 13]
lmo = dateday[todayindex + 1]
if mo <= day:
if fmo > mo and month == 1:
fmonth = 12
fyear = year - 1
elif fmo > mo:
fmonth = month - 1
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
fmonth = 12
year = year - 1
fyear = year
else:
lmonth = month
month = month - 1
fmonth = month
print("根据你输入的日期:{}年{}月{}日,推算".format(year, month, day))
print("上周一日期为:{}年{}月{}日".format(fyear, fmonth, fmo))
print("本周一日期为:{}年{}月{}日".format(year, month, mo))
print("下周一日期为:{}年{}月{}日".format(lyear, lmonth,lmo))
运行截图
版权声明:本文为m0_46981340原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。