How to use chinese_calendar to get the last working day date in python

WBOY
Release: 2023-05-18 17:58:06
forward
1701 people have browsed it

**The latest version of chinese_calendar is 1.8.0 as of the release of this article. The new version will be updated during the following year’s holidays around November each year.

import datetime
from chinese_calendar import is_workday
def get_pervious_work_day(day: datetime):
    """获取上一个工作日"""
    day = day - datetime.timedelta(days=1)
    if is_workday(day):
        return day
    return get_pervious_work_day(day)
Copy after login

Testing Saturdays and Sundays:

today = datetime.date.today().replace(day=20)
date = get_pervious_work_day(today)
print(date)
Copy after login

How to use chinese_calendar to get the last working day date in python

Test 2023 Spring Festival:

today = datetime.date.today().replace(day=28).replace(month=1)
date = get_pervious_work_day(today)
print(date)
Copy after login

How to use chinese_calendar to get the last working day date in python

Test 2023 Labor Day:

today = datetime.date.today().replace(day=4).replace(month=5)
date = get_pervious_work_day(today)
print(date)
Copy after login

How to use chinese_calendar to get the last working day date in python

Test 2023 National Day Section:

today = datetime.date.today().replace(day=7).replace(month=10)
date = get_pervious_work_day(today)
print(date)
Copy after login

Extension: Python calculates the date after a certain working day

I wanted to write it myself at first, but because the holiday time in China is not fixed, I need to continue and fill it in manually It is quite troublesome to check whether the date is a legal holiday, so I found that python has a module called chinese_calendar. The author should continue to update it

The code and ideas are actually very simple

My need is to calculate a certain date Starting from a date, how many working days will this date be?

The example below is the time range of the year from September 10, 2021 to September 10, 2022

To calculate the 30 working days after September 10, 2021, what is the date?

import chinese_calendar
import datetime
def after_work_day():
    year = 2021
    month = 9
    day = 10
    # after_work_days是设置多少个工作日
    after_work_days = 30
    next_year = year + 1
    range_time = datetime.datetime(next_year, month, day)
    # 如果一年后的时间超过了模块规定的最长时间,那么直接取最新版的最大时间 截止目前(2022.11.30)最新版到2022年末,需要等国家出台了明年的放假安排之后可能才会更新
    if range_time >= datetime.datetime(2022, 12, 31):
        range_time = datetime.datetime(2022, 12, 31)
    work_days = chinese_calendar.get_workdays(datetime.datetime(year, month, day), range_time)
    count = 0
    for work_day in work_days:
        count += 1
        if count > after_work_days:
            print(work_day)
            break
if __name__ == '__main__':
    after_work_day()
Copy after login

One thing to note is the number of days in February. The number of days in leap years and flat years is different. According to Needs taken into account

The above is the detailed content of How to use chinese_calendar to get the last working day date in python. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!