Home  >  Article  >  Backend Development  >  How to use chinese_calendar to get the last working day date in python

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

WBOY
WBOYforward
2023-05-18 17:58:061702browse

**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)

Testing Saturdays and Sundays:

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

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)

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)

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)

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()

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!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete