hercule-tech/jours-feries-france

这个轻量级的PHP库提供了简单的方法来查找所有法国公共假日 🇫🇷(甚至包括特定地区的,如阿尔萨斯-摩泽尔或法国海外省);计算工作日日期,“法兰西期限”等。

1.4 2023-11-13 16:14 UTC

This package is not auto-updated.

Last update: 2024-09-16 20:16: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日!一个解决方案是要求“最大期限”或“最小期限”。让我们看看这个方法何时是必要的。