tochka-developers / work-calendar
Carbon的生产日历扩展,适用于俄罗斯联邦
v2.2.0
2022-01-21 06:26 UTC
Requires
- php: >=7.2.0
- ext-json: *
- ext-simplexml: *
- nesbot/carbon: ^2.
Requires (Dev)
- phpunit/phpunit: ^7
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了。