wyzen-packages/jours-feries-france

这个轻量级的PHP库提供了简单的函数来查找所有法国公共假日 🇫🇷(包括阿尔萨斯-摩泽尔或法国海外领地的特定假日);计算工作日日期,“银行假日”等。

v1.4.0 2022-06-08 08:02 UTC

This package is auto-updated.

Last update: 2024-09-08 12:57:34 UTC


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日!一个解决方案是请求“最大”或“最小”延迟。让我们看看这个方法是否有一天是必要的。