PHP code example of blumfontein / php-business-time
1. Go to this page and download the library: Download blumfontein/php-business-time library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
$nonBusinessDays[0]->businessName();
// = e.g. "the weekend"
$start = new BusinessTime\BusinessTime('today');
$end = new BusinessTime\BusinessTime('tomorrow');
$timePeriod = new BusinessTime\BusinessTimePeriod($start, $end);
$businessPeriods = $timePeriod->businessPeriods();
// = array of BusinessTimePeriod instances for each period of business time.
$nonBusinessPeriods = $timePeriod->nonBusinessPeriods();
// = array of BusinessTimePeriod instances for each period of non-business time.
$businessTime = new BusinessTime\BusinessTime();
$businessTime->startOfBusinessDay();
// = BusinessTime instance for e.g. 09:00
$businessTime->endOfBusinessDay();
// = BusinessTime instance for e.g. 17:00
$businessTime = new BusinessTime\BusinessTime();
$businessTime->setBusinessTimeConstraints(
new BusinessTime\Constraint\WeekDays(),
new BusinessTime\Constraint\BetweenHoursOfDay(9, 17),
);
new BusinessTime\Constraint\HoursOfDay(10, 13, 17);
new BusinessTime\Constraint\BetweenHoursOfDay(9, 17);
new BusinessTime\Constraint\BetweenTimesOfDay('08:45', '17:30');
new BusinessTime\Constraint\WeekDays();
new BusinessTime\Constraint\Weekends();
new BusinessTime\Constraint\DaysOfWeek('Monday', 'Wednesday', 'Friday');
new BusinessTime\Constraint\BetweenDaysOfWeek('Monday', 'Friday');
new BusinessTime\Constraint\DaysOfMonth(1, 8, 23);
new BusinessTime\Constraint\BetweenDaysOfMonth(1, 20);
new BusinessTime\Constraint\MonthsOfYear('January', 'March', 'July');
new BusinessTime\Constraint\BetweenMonthsOfYear('January', 'November');
new BusinessTime\Constraint\DaysOfYear('January 8th', 'March 16th', 'July 4th');
new BusinessTime\Constraint\BetweenDaysOfYear('January 1st', 'December 5th');
new BusinessTime\Constraint\Dates('2019-01-17', '2019-09-23', '2020-05-11');
new BusinessTime\Constraint\BetweenDates('2018-01-11', '2018-12-31');
new BusinessTime\Constraint\AnyTime(); // Oh dear.
$decemberOff = new BusinessTime\Constraint\Composite\Not(
BusinessTime\Constraint\MonthsOfYear('December')
);
$lunchTimeOff = (new BusinessTime\Constraint\BetweenHoursOfDay(9, 17))->except(
new BusinessTime\Constraint\HoursOfDay(13)
);
(new BusinessTime\Constraint\AnyTime())->except(
new BusinessTime\Constraint\DaysOfWeek('Friday')
);
// All times except Fridays are considered business time.
interface BusinessTimeConstraint
{
public function isBusinessTime(DateTimeInterface $time): bool;
}
$businessTime = new BusinessTime\BusinessTime();
$businessTime->setBusinessTimeConstraints(
(new BusinessTime\Constraint\BetweenHoursOfDay(10, 18))->except(
new BusinessTime\Constraint\BetweenTimesOfDay('13:00', '14:00')
), // 9-6 every day, with an hour for lunch.
(new BusinessTime\Constraint\WeekDays())->except(
new BusinessTime\Constraint\WeekDays('Thursday')
), // Week days, but let's take Thursdays off.
new BusinessTime\Constraint\BetweenMonthsOfYear('January', 'November'),
// No-one does any work in December anyway.
new BusinessTime\Constraint\Composite\Not(
new BusinessTime\Constraint\DaysOfYear('August 23rd', 'October 20th')
) // Why not take off your birthday and wedding anniversary?
);
$factory = new BusinessTime\Remote\WebCalFiFactory(
new GuzzleHttp\Client(),
'https://www.webcal.fi/cal.php?id=83&format=json' // for example
);
$dates = $factory->getDates();
// = array of date objects from the specified calendar.
$webCalFiConstraint = $factory->makeConstraint();
// = a constraint containing the retrieved dates and their descriptions.
$deadline = new BusinessTime\Deadline\RecurringDeadline(
new BusinessTime\Constraint\Weekdays(),
new BusinessTime\Constraint\HoursOfDay(11)
);
$businessTime = new BusinessTime\BusinessTime();
$deadline->nextOccurrenceFrom($businessTime);
// = a new business time instance for the time the deadline next occurs.
$deadline->hasPassedToday();
// = true if the deadline has been passed today.
$deadline->hasPassedBetween(
BusinessTime\BusinessTime::now->subWeek(),
BusinessTime\BusinessTime::now->addWeek()
);
// = true if the deadline is ever passed in the given time period.
$time = new BusinessTime\BusinessTime();
$deadline = new BusinessTime\BusinessTime('2018-12-08 17:00');
$time->gt($deadline);
// = true if the moment has passed.
$factory = new BusinessTime\BusinessTimeFactory();
$factory->setConstraints(
new BusinessTime\Constraint\DaysOfWeek('Saturday', 'Sunday'),
new BusinessTime\Constraint\Dates('2018-12-25'),
);