用Python轻松获取任意月份的公休日期

简介: 本文介绍了如何使用Python的`calendar`和`datetime`模块轻松获取任意月份的公休日期,包括周六和周日。通过示例代码,用户可以输入年份和月份,程序将输出该月份的所有公休日。这对于安排会议、规划旅行或数据分析都非常有用。

用Python轻松获取任意月份的公休日期

在日常生活中,我们经常需要知道某个特定月份的工作日和公休日。无论是为了安排会议、规划旅行还是进行数据分析,准确地获取这些信息都是非常有用的。本文将介绍如何使用Python来实现这一功能,并提供一个完整的示例代码,帮助你轻松获取任意月份的公休日期。

引言

在许多应用场景中,我们需要处理日期相关的数据。例如,在企业中,人力资源部门可能需要统计员工的出勤情况;在教育领域,学校可能需要安排考试时间表。这些任务都离不开对工作日和公休日的准确判断。Python作为一种强大的编程语言,提供了丰富的库来处理日期和时间,其中calendar模块和datetime模块是两个非常实用的工具。

Python中的calendardatetime模块

  • calendar模块:提供了与日历相关的各种功能,如生成日历、计算星期几等。
  • datetime模块:用于处理日期和时间,可以方便地创建、解析和格式化日期对象。

示例代码

以下是一个完整的Python脚本,它能够接收用户输入的年份和月份,然后输出该月份的所有公休日期(即周六和周日)。

import calendar
from datetime import date


def get_workdays(year, month):
    """返回指定年份和月份的所有工作日"""
    # 获取该月的日历
    month_calendar = calendar.monthcalendar(year, month)

    workdays = []

    for week in month_calendar:
        for day in week:
            if day != 0:  # 排除无效日期
                current_date = date(year, month, day)
                # 检查当前日期是否是工作日
                if current_date.weekday() < 5:  # Monday to Friday are considered workdays
                    workdays.append(current_date)

    return workdays

# 所用工作日的空列表
workdays_lst = []
# 所有当月日期的空列表
all_workdays = []
def all_month_dates(year, month):
    """
    输出指定年份和月份的所有日期。

    参数:
    year (int): 年份
    month (int): 月份

    返回:
    None
    """
    # 获取月份的第一天是星期几(0-6)和该月的天数
    _, num_days = calendar.monthrange(year, month)
    if 1 <= month <= 12:
        workdays = get_workdays(year, month)
        for d in workdays:
            if d.strftime('%d').startswith('0'):
                workdays_lst.append(f"{d.strftime('%d')[1]}日")
            else:
                workdays_lst.append(f"{d.strftime('%d')}日")

    else:
        print("无效的月份,请输入1-12之间的数字。")
    # 打印月份的每一天
    for day in range(1, num_days + 1):
        all_workdays.append(f"{day}日")

    diff = [f'{year}年{month}月'+ item for item in all_workdays if item not in workdays_lst]

    return diff
# 用户输入
year = int(input("请输入年份: "))
month = int(input("请输入月份: "))

# 调用函数
print(all_month_dates(year, month))

运行结果:

请输入年份: 2024
请输入月份: 11
['2024年11月2日', '2024年11月3日', '2024年11月9日', '2024年11月10日', '2024年11月16日', '2024年11月17日', '2024年11月23日', '2024年11月24日', '2024年11月30日']

代码解释

  1. 导入必要的模块
    • calendar模块用于生成日历和计算星期几。
    • datetime模块用于处理日期和时间。
  2. 定义get_workdays函数
    • 该函数接受年份和月份作为参数,返回该月份的所有工作日。
    • 使用calendar.monthcalendar生成该月的日历,遍历每一周的每一天,检查是否为工作日(周一到周五),并将工作日添加到列表中。
  3. 定义all_month_dates函数
    • 该函数接受年份和月份作为参数,返回该月份的所有公休日。
    • 首先检查月份是否有效,然后使用calendar.monthrange获取该月的天数。
    • 调用get_workdays函数获取工作日列表,并将其转换为字符串格式。
    • 生成该月的所有日期,并过滤掉工作日,保留公休日。
  4. 用户输入
    • 提示用户输入年份和月份。
  5. 调用函数并打印结果
    • 调用all_month_dates函数并打印公休日列表。

结论

通过上述代码,我们可以轻松地获取任意月份的公休日期。这不仅有助于我们更好地管理时间,还能在实际应用中提供便利。希望这篇文章能帮助你在处理日期相关的任务时更加得心应手。如果你有任何问题或建议,欢迎在评论区留言交流!

欢迎点赞、关注、转发、收藏!!!

相关文章
|
3月前
|
Python
Datetime模块应用:Python计算上周周几对应的日期
Datetime模块应用:Python计算上周周几对应的日期
87 1
|
3月前
|
Python
Python编程获取当前日期的所属周日期信息
Python编程获取当前日期的所属周日期信息
60 1
|
2月前
|
Python
在 Python 中,如何将日期时间类型转换为字符串?
在 Python 中,如何将日期时间类型转换为字符串?
128 64
|
2月前
|
Python
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
39 6
|
3月前
|
数据挖掘 iOS开发 MacOS
利用Python计算农历日期
利用Python计算农历日期
138 4
|
3月前
|
数据处理 Python
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
26 1
|
4月前
|
数据挖掘 索引 Python
# Python 判断入参日期是周几
# Python 判断入参日期是周几 原创
34 2
|
3月前
|
调度 开发者 Python
python超详细的日期操作【建议收藏备用】
python超详细的日期操作【建议收藏备用】
25 0
|
3月前
|
Python
使用python计算两个日期之前的相差天数,周数
使用python计算两个日期之前的相差天数,周数
53 0
|
8月前
|
调度 Python
Python 日期
Python 日期
47 0