Python获取本周最后一个工作日

简介

在开发中,经常会遇到需要获取日期的需求。本文将教你如何使用Python获取本周的最后一个工作日,以满足日常开发中的需求。

整体流程

下面是实现该功能的整体流程:

  1. 获取当前日期
  2. 判断当前日期是否为工作日
  3. 如果是工作日,则判断是否为本周最后一天
  4. 如果是本周最后一天,则输出结果
  5. 如果不是本周最后一天,则计算下一个工作日
  6. 返回第3步

代码实现

下面是每一步需要做的事情以及对应的代码:

1. 获取当前日期

首先,我们需要获取当前日期,以便后续的判断和计算。可以使用Python的datetime模块来获取当前日期,代码如下:

import datetime

today = datetime.date.today()

上面的代码中,datetime.date.today()函数可以返回当前日期。

2. 判断当前日期是否为工作日

在判断当前日期是否为工作日之前,我们需要先定义工作日的概念。通常情况下,周一至周五都是工作日,周六和周日为非工作日。

下面的代码可以判断当前日期是否为工作日:

is_weekday = today.weekday() < 5

上面的代码中,today.weekday()函数可以返回当前日期的星期几,星期一为0,星期日为6。通过判断星期几是否小于5,即可确定当前日期是否为工作日。

3. 判断是否为本周最后一天

如果当前日期是工作日,我们还需要判断它是否为本周的最后一天。可以使用datetime模块的weekday()函数来判断,代码如下:

is_last_day = today.weekday() == 4

上面的代码中,today.weekday()函数返回的结果为0到6,其中0表示星期一,6表示星期日。通过判断当前日期的星期几是否为4(星期五),即可确定是否为本周最后一天。

4. 输出结果

如果当前日期是工作日且为本周最后一天,我们就可以输出结果了。可以使用print()函数输出结果,代码如下:

if is_weekday and is_last_day:
    print("本周最后一个工作日是:", today)

上面的代码中,如果当前日期既是工作日又是本周最后一天,则会输出当前日期。

5. 计算下一个工作日

如果当前日期不是本周最后一天,我们需要计算下一个工作日。可以使用timedelta类来进行日期的加减操作,代码如下:

from datetime import timedelta

next_day = today + timedelta(days=1)

上面的代码中,timedelta(days=1)表示日期增加一天。通过将当前日期加上一天,即可得到下一个工作日。

6. 返回第3步

如果当前日期不是本周最后一天,我们需要返回到第3步,继续判断是否为本周最后一天,直到找到本周的最后一个工作日为止。

示例代码

下面是完整的示例代码:

import datetime
from datetime import timedelta

def get_last_weekday():
    today = datetime.date.today()
    is_weekday = today.weekday() < 5
    is_last_day = today.weekday() == 4

    if is_weekday and is_last_day:
        print("本周最后一个工作日是:", today)
    else:
        next_day = today + timedelta(days=1)
        return next_day

last_weekday = get_last_weekday()
while last_weekday is not None:
    last_weekday = get_last_weekday()

关系图

下面是该功能的关系图:

erDiagram
    获取当前日期 }|..| 判断当前日期是否为工作日
    判断当前日期是否为工作日 }|..| 判断是否为本周最后一天
    判断是否为本周最后一天 }|..| 计算下一个工作日
    计算下一个工作日 }|..| 返回第3步
    返回第