python给定任意日期,求上周本周下周周一日期

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版权协议,转载请附上原文出处链接和本声明。