robier/holiday

计算假日库

dev-master 2015-10-15 20:46 UTC

This package is auto-updated.

Last update: 2024-09-13 05:39:54 UTC


README

假日项目将解决您计算假日的难题。无论是固定日期、浮动日期还是依赖于其他假日的日期。这个库是在需要不针对特定国家的假日计算时开发的,而其他大多数库都是这样。

请注意,该库不支持持续超过1天的假日。

而且它非常容易使用

use \Robier\Holiday\Holidays;

$holidays = new Holidays();
$holidays->registerFixed('new_year', 1, 1);
$holidays->registerFloating('us_labour_day', 'first Monday of September');
$holidays->register('easter', new Holidays\Easter());
// Ascension of Jesus accords 40 days after easter
$holidays->registerDependent('ascension_of_jesus', 'easter', 40);

// true if there is a holiday on that date, false otherwise
var_dump($holidays->isHolidayOn(1, 1, 2030));

// gets HolidayData object if holiday exists on that date, null otherwise
var_dump($holidays->getHolidayOn(1, 1, 2030));

// true if there is any holidays in that period, false otherwise
var_dump($holidays->areAnyHolidaysBetween('2018-07-04', '2018-09-15'));

// gets array of holidays for range
var_dump($holidays->getHolidaysBetween('2018-07-04', '2018-09-15'));

// array of all holidays
var_dump($holidays->getAllHolidaysFor(2015));

我们强烈不建议使用此库的戳记,我们不喜欢它们,因为它们在时区和PHP处理它们方面真的不够精确 :)

特性

  • 您可以注册3种日期类型
    • fixed:假日日期始终固定(例如新年)
    • floating:假日日期不固定(例如复活节)
    • dependant:一个假日依赖于另一个假日(它是在“主要”假日之前或之后x天)
  • 您可以通过提供日期来检查假日是否存在
  • 您还可以通过提供日期来获取假日
  • 您可以通过提供日期范围来检查该日期范围内是否有任何假日
  • 您还可以通过提供日期范围来获取假日
  • 您可以获取指定年份的所有假日
  • 您可以通过实现Calculable接口来创建自己的假日类定义(它不能是依赖于假日的类型)

安装

此项目需要PHP 5.5或更高版本。通过composer安装此库非常简单,只需运行以下命令

composer require robier/holiday

贡献

您可以通过pull request进行贡献。

待办事项

  • 添加对持续超过1天的假日的支持
  • 添加更多默认假日
  • 增加测试覆盖率

许可证

此库是在MIT许可证下开发的。