**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)
Test 2023 Spring Festival:
today = datetime.date.today().replace(day=28).replace(month=1) date = get_pervious_work_day(today) print(date)
Test 2023 Labor Day:
today = datetime.date.today().replace(day=4).replace(month=5) date = get_pervious_work_day(today) print(date)
Test 2023 National Day Section:
today = datetime.date.today().replace(day=7).replace(month=10) date = get_pervious_work_day(today) print(date)
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!