schoppax/business-days-calculator

Business day calculation


Keywords
business, days
License
MIT

Documentation

business-days-calculator

Business Days Calculator

Build Status Scrutinizer Code Quality Coverage Status Latest Stable Version License

Install

  • If you're using Composer to manage dependencies, you can use
composer require schoppax/business-days-calculator

or add to your composer.json file:

"require": {
    "schoppax/business-days-calculator": "1.*",
}

Example

use \BusinessDays\Calculator;

$holidays = [
    new \DateTime('2000-12-31'),
    new \DateTime('2001-01-01')
];

$freeDays = [
    new \DateTime('2000-12-28')
];

$freeWeekDays = [
    Calculator::SATURDAY,
    Calculator::SUNDAY
];

$calculator = new Calculator();
$calculator->setFreeWeekDays($freeWeekDays); // repeat every week
$calculator->setHolidays($holidays);         // repeat every year
$calculator->setFreeDays($freeDays);         // don't repeat

$result = $calculator->addBusinessDays(new \DateTime('2000-12-27', 3);    // add X working days
echo $result->format('Y-m-d');               // 2001-01-03

$result = $calculator->addBusinessDays(new \DateTime('2000-01-03', -3);   // substract X working days
echo $result->format('Y-m-d');               // 2001-12-27

$result = $calculator->getBusinessDays(new \DateTime('2000-12-27', 3);    // get all X working days
foreach ($result as $dt) {
    echo $dt->format('Y-m-d');               // 2000-12-29 / 2001-01-02 / 2001-01-03
}

$result = $calculator->getBusinessDaysBetween(new \DateTime('2000-12-27', new \DateTime('2001-01-03');
foreach ($result as $dt) {
    echo $dt->format('Y-m-d');               // 2000-12-29 / 2001-01-02 / 2001-01-03
}
echo count($result);                        // 3