**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)
Tests printemps 2023. Festival :
today = datetime.date.today().replace(day=28).replace(month=1) date = get_pervious_work_day(today) print(date)
Test 2023 Fête du Travail :
today = datetime.date.today().replace(day=4).replace(month=5) date = get_pervious_work_day(today) print(date)
Test 2023 Fête nationale :
today = datetime.date.today().replace(day=7).replace(month=10) date = get_pervious_work_day(today) print(date)
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()
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!