Maison >développement back-end >Tutoriel Python >Comment utiliser Chinese_calendar pour obtenir la date du dernier jour ouvrable en python

Comment utiliser Chinese_calendar pour obtenir la date du dernier jour ouvrable en python

WBOY
WBOYavant
2023-05-18 17:58:061790parcourir

**La version Chinese_calendar est la 1.8.0 à compter de la sortie de l'article. La nouvelle version sera mise à jour vers novembre de chaque année pour les vacances de l'année suivante

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)

Tests les samedis et dimanches :

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

Comment utiliser Chinese_calendar pour obtenir la date du dernier jour ouvrable en python

Tests printemps 2023. Festival :

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

Comment utiliser Chinese_calendar pour obtenir la date du dernier jour ouvrable en python

Test 2023 Fête du Travail :

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

Comment utiliser Chinese_calendar pour obtenir la date du dernier jour ouvrable en python

Test 2023 Fête nationale :

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

Extension : Python calcule la date après un certain jour ouvrable

Je voulais l'écrire moi-même au début, mais parce que l'heure des vacances en Chine n'est pas fixe, il est donc difficile de continuer et de renseigner manuellement si la date est un jour férié, j'ai donc trouvé un module en python appelé Chinese_calendar L'auteur devrait continuer à le mettre à jour

Le code et. les idées sont en fait très simples

Mon besoin est de calculer une certaine date de début, combien de jours ouvrables plus tard cette date sera-t-elle

L'exemple ci-dessous est que j'utilise la plage horaire du 10 septembre 2021 au 10 septembre 2022 pour calculer le 10 septembre 2021 Quelles sont les dates des 30 prochains jours ouvrables

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

Une chose à noter est le nombre de jours en février. Le nombre de jours dans les années bissextiles et les années plates est différent. vos besoins

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer