You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark Databricks中获取当前日期的最近5个工作日?

获取指定数量的最近工作日(排除周末)实现方法

当然有实现方法,核心逻辑是从当前日期开始逐天往前遍历,筛选出周一到周五的日期,直到收集够指定数量。以下是几种常用编程语言的具体实现:

Python 实现

利用标准库datetime就能轻松完成,无需额外依赖:

import datetime

def get_recent_workdays(count=5):
    workdays = []
    current_date = datetime.date.today()
    while len(workdays) < count:
        # weekday() 返回0=周一,4=周五,小于5即为工作日
        if current_date.weekday() < 5:
            # 格式化为示例中的日期格式
            formatted_date = current_date.strftime("%Y年%m月%d日(%A)")
            # 替换英文星期为中文
            formatted_date = formatted_date.replace("Monday", "周一")\
                                         .replace("Tuesday", "周二")\
                                         .replace("Wednesday", "周三")\
                                         .replace("Thursday", "周四")\
                                         .replace("Friday", "周五")
            workdays.append(formatted_date)
        # 往前推一天
        current_date -= datetime.timedelta(days=1)
    # 反转列表,得到从早到晚的顺序
    return workdays[::-1]

# 调用示例
print(get_recent_workdays(5))

代码说明

  • 用datetime.date.today()获取当前本地日期
  • 通过weekday()判断是否为工作日,跳过周六(5)和周日(6)
  • 格式化日期并将英文星期转为中文,匹配示例格式
  • 最后反转列表,让结果按时间从早到晚排列

JavaScript 实现

浏览器或Node.js环境都能运行,无需额外包:

function getRecentWorkdays(count = 5) {
    const workdays = [];
    const weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
    let currentDate = new Date();
    
    while (workdays.length < count) {
        const dayIndex = currentDate.getDay();
        // 排除周日(0)和周六(6)
        if (dayIndex !== 0 && dayIndex !== 6) {
            const year = currentDate.getFullYear();
            const month = String(currentDate.getMonth() + 1).padStart(2, '0');
            const day = String(currentDate.getDate()).padStart(2, '0');
            workdays.push(`${year}年${month}月${day}日(${weekDays[dayIndex]})`);
        }
        // 往前推一天
        currentDate.setDate(currentDate.getDate() - 1);
    }
    // 反转得到从早到晚的顺序
    return workdays.reverse();
}

// 调用示例
console.log(getRecentWorkdays(5));

代码说明

  • getDay()返回0(周日)到6(周六),直接排除这两个值
  • 用padStart(2, '0')确保月份和日期是两位数格式
  • 收集够指定数量后反转列表,匹配示例中的顺序

通用逻辑总结

不管用哪种语言,核心步骤都是:

  1. 从当前日期开始,初始化一个空列表用于存储工作日
  2. 逐天往前推移日期,每次判断是否为周末
  3. 若为工作日则加入列表,直到列表长度达到指定数量
  4. 可选:反转列表,让结果按时间从早到晚排列

内容的提问来源于stack exchange,提问作者ASD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:42:24