hercule-tech / jours-feries-france
这个轻量级的PHP库提供了简单的方法来查找所有法国公共假日 🇫🇷(甚至包括特定地区的,如阿尔萨斯-摩泽尔或法国海外省);计算工作日日期,“法兰西期限”等。
1.4
2023-11-13 16:14 UTC
Requires
- ext-calendar: *
Requires (Dev)
- phpunit/phpunit: ^9
README
这个PHP库提供了简单的方法来
- 找回所有法国公共假日 🇫🇷(即使是特定地区的,如阿尔萨斯-摩泽尔,或法国海外省);
- 执行工作日日期的计算,同时考虑特定地区的公共假日;
- 计算“行政期限”;
- …以及更多惊喜!
非常受https://github.com/etalab/jours-feries-france(但用PHP编写,还有一些有用的功能)⭐️
JoursFeries
类的用法
// Obtenir les jours fériés pour une année, pour la métropole Française
$Jours = JoursFeries::forYear(2018);
// $Jours = [
// 'Jour de l’an' => new DateTime('01-01-2018'),
// 'Lundi de Pâques' => new DateTime('02-04-2018'),
// 'Fête du Travail' => new DateTime('01-05-2018'),
// 'Victoire de 1945' => new DateTime('08-05-2018'),
// 'Ascension' => new DateTime('10-05-2018'),
// 'Lundi de Pentecôte' => new DateTime('21-05-2018'),
// 'Fête Nationale' => new DateTime('14-07-2018'),
// 'Assomption' => new DateTime('15-08-2018'),
// 'Toussaint' => new DateTime('01-11-2018'),
// 'Armistice' => new DateTime('11-11-2018'),
// 'Jour de Noël' => new DateTime('25-12-2018'),
// ]
// Méthode spécifique pour obtenir certains jours fériés (en DateTime) :
echo JoursFeries::lundiPaques(2018); // => new DateTime('02-04-2018')
echo JoursFeries::ascension(2018); // new DateTime('10-05-2018')
echo JoursFeries::lundiPentecote(2018); // new DateTime('21-05-2018')
// Obtenir les jours fériés pour une zone spécifique
$Jours = JoursFeries::forYear(2018, "Alsace-Moselle");
# Quelques fonctions pratiques :
JoursFeries::isFerie(new DateTime("25-12-2019"), "Métropole"); // => True
JoursFeries::getNextFerie(new DateTime("24-12-2019"),"Métropole"); // => new DateTime("25-12-2019")
JoursAdministratifs
类的用法(计算期限)
// Obtenir la date correspondante à 10 jours calendaires à partir d'aujourd'hui
JoursAdministratifs::addJourCalendaire(new DateTime(), 10);
// Obtenir la date correspondante à 10 jours ouvrables à partir d'aujourd'hui
JoursAdministratifs::addJourOuvrable(new DateTime(), 10);
// Obtenir la date correspondante à 8 jours ouvrés à partir d'aujourd'hui
JoursAdministratifs::addJourOuvre(new DateTime(), 8);
// Obtenir la date correspondante d'il y a 10 jours ouvrés à partir d'aujourd'hui (dans le passé donc)
JoursAdministratifs::subJourOuvre(new DateTime(), 10);
// Obtenir la date correspondante à 10 jours ouvrables après le 20/12/2017, en Alsasce-Moselle
JoursAdministratifs::addJourOuvrable(new DateTime('20-12-2017'), 10, 'Alsace-Moselle');
// Obtenir un délai franc, c'est à dire 10 jours calendaires à partir du 14/12/2020,
// mais si le dernier jour n'est pas ouvré, alors on renverra le prochain jour ouvré
// voir https://www.attestis.com/calculateur-de-delai-franc/
JoursAdministratifs::addJourFranc(new DateTime('14-12-2020'), 10);
待办事项和已知问题
添加一个.gitlab-ci.yml文件并自动在gitlab-ci中执行测试
JoursAdministratifs::subJourFranc()
方法不存在。为什么?因为期限的结束对应下一个工作日,因此,如果期限结束时连续几天非工作日,原始日期的计算将变得模糊/随机!如果我想找到对应于10天期限的开始日期,该期限于2020年12月31日结束,即周一,而之前的几天分别是圣诞节前的星期日、星期六和星期五。期限开始日期是不确定的,计算起来很棘手,因为它可能是12月15日、16日、17日或18日!一个解决方案是要求“最大期限”或“最小期限”。让我们看看这个方法何时是必要的。