tochka-developers/work-calendar

Carbon的生产日历扩展,适用于俄罗斯联邦

v2.2.0 2022-01-21 06:26 UTC

This package is auto-updated.

Last update: 2024-09-21 12:20:08 UTC


README

描述

类助手方便地处理生产日历。默认情况下,配置了俄罗斯联邦的生产日历,不考虑地区性节假日。扩展了Carbon\Carbon的功能。

安装

使用composer

$ composer require tochka-developers/work-calendar

使用

方便处理生产日历的方法

  • isWorkday(): bool - 如果是工作日则为true,否则为false;
  • diffInWorkdays(WorkCalendar $carbon): int - 两个日期之间的工作日差。如果传递的日期小于(早于)当前日期,则可能返回负值;
  • addWorkday() - 向当前日期添加工作日。即实例将保存下一个工作日而不是设置的日期;
  • subWorkday() - 从当前日期减去工作日。即实例将保存前一个工作日而不是设置的日期;
  • addWorkdays(int $count) - 向当前日期添加$count个工作日;
  • subWorkdays(int $count) - 从当前日期减去$count个工作日。

使用示例

$date = WorkCalendar::create('2018', '02', '22');
print_r($date->isWorkday()); // true
...
$date->addDay(); // 2018-02-23, день защитника отечества
print_r($date->isWorkday()); // false
...
$date->addWorkday();
print_r($date->format('Y-m-d') // 2018-02-26
...
$date->subWorkday();
print_r($date->format('Y-m-d') // 2018-02-22
...
$date->addWorkdays(5);
print_r($date->format('Y-m-d') // 2018-03-02
...
$date->subWorkdays(5);
print_r($date->format('Y-m-d') // 2018-02-22

自定义生产日历

如果需要考虑地区性节假日或为其他国家创建生产日历,可以按以下方式操作

  • 通过继承类Tochka\Calendar\AbstractYearMaskProvider并重写方法generateYearMask()来自定义功能。该方法应返回表示工作日和休息日的数组,其中1代表工作日,0代表节假日。数组的元素数量应等于一年的天数;
  • Tochka\Calendar\WorkCalendar::setMaskProvider()中传递新创建的类的实例;
  • 完成,现在可以开始使用WorkCalendar了。

来源