2017 © Pedro Peláez
 

library business

DateTime calculations in business hours

image

florianv/business

DateTime calculations in business hours

  • Thursday, March 17, 2016
  • by florianv
  • Repository
  • 6 Watchers
  • 331 Stars
  • 24,953 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 25 Forks
  • 4 Open issues
  • 7 Versions
  • 10 % Grown

The README.md

Business ![Build status][travis-image] ![Version][version-image] PHP Version

DateTime calculations in business hours, (*1)

Installation

$ composer require florianv/business

Usage

First you need to configure your business schedule:, (*2)

use Business\SpecialDay;
use Business\Day;
use Business\Days;
use Business\Business;
use Business\Holidays;
use Business\DateRange;

// Opening hours for each week day. If not specified, it is considered closed
$days = [
    // Standard days with fixed opening hours
    new Day(Days::MONDAY, [['09:00', '13:00'], ['2pm', '5 PM']]),
    new Day(Days::TUESDAY, [['9 AM', '5 PM']]),
    new Day(Days::WEDNESDAY, [['10:00', '13:00'], ['14:00', '17:00']]),
    new Day(Days::THURSDAY, [['10 AM', '5 PM']]),

    // Special day with dynamic opening hours depending on the date
    new SpecialDay(Days::FRIDAY, function (\DateTime $date) {
        if ('2015-05-29' === $date->format('Y-m-d')) {
            return [['9 AM', '12:00']];
        }

        return [['9 AM', '5 PM']];
    }),
];

// Optional holiday dates
$holidays = new Holidays([
    new \DateTime('2015-01-01'),
    new \DateTime('2015-01-02'),
    new DateRange(new \DateTime('2015-07-08'), new \DateTime('2015-07-11')),
]);

// Optional business timezone
$timezone = new \DateTimeZone('Europe/Paris');

// Create a new Business instance
$business = new Business($days, $holidays, $timezone);

Methods

within() - Tells if a date is within business hours
$bool = $business->within(new \DateTime('2015-05-11 10:00'));
timeline() - Returns a timeline of business dates
$start = new \DateTime('2015-05-11 10:00');
$end = new \DateTime('2015-05-14 10:00');
$interval = new \DateInterval('P1D');

$dates = $business->timeline($start, $end, $interval);
closest() - Returns the closest business date from a given date
// After that date (including it)
$nextDate = $business->closest(new \DateTime('2015-05-11 10:00'));

// Before that date (including it)
$lastDate = $business->closest(new \DateTime('2015-05-11 10:00'), Business::CLOSEST_LAST);

Serialization

PHP serialization

The Business class can be serialized so it can be stored for later reuse:, (*3)

$serialized = serialize($business);
$business = unserialize($serialized);

If you use SpecialDay instances, you need to install the jeremeamia/superclosure library providing closure serialization:, (*4)

$ composer require jeremeamia/superclosure

JSON serialization

All classes can be encoded to JSON, (*5)

$json = json_encode($business);

The SpecialDay instances require a context in order extract the data from the callable. This is automatically set to new \DateTime('now') for json_encode() call only., (*6)

License

MIT, (*7)

The Versions

17/03 2016

dev-master

9999999-dev https://github.com/florianv/business

DateTime calculations in business hours

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

date time schedule business hour

12/02 2016

v1.3.0

1.3.0.0 https://github.com/florianv/business

DateTime calculations in business hours

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

date time schedule business hour

18/09 2015

v1.2.1

1.2.1.0 https://github.com/florianv/business

DateTime calculations in business hours

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

date time schedule business hour

27/08 2015

v1.2.0

1.2.0.0 https://github.com/florianv/business

DateTime calculations in business hours

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

date time schedule business hour

08/06 2015

v1.1.0

1.1.0.0 https://github.com/florianv/business

DateTime calculations in business hours

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

date time schedule business hour

06/06 2015

v1.0.1

1.0.1.0 https://github.com/florianv/business

DateTime calculations in business hours

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

date time schedule business hour

03/06 2015

v1.0.0

1.0.0.0 https://github.com/florianv/business

DateTime calculations in business hours

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

date time schedule business hour