2017 © Pedro PelĂĄez
 

library date-range

Working with date ranges made easy.

image

danoha/date-range

Working with date ranges made easy.

  • Thursday, June 8, 2017
  • by Danoha
  • Repository
  • 1 Watchers
  • 1 Stars
  • 5,800 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 18 % Grown

The README.md

DateRange

Working with date ranges made easy., (*1)

Installation

Works best with composer. :ok_hand:, (*2)

composer require danoha/date-range

If you do not use composer or its autoloading, require src/DateRange.php and src/DateRangeCollection.php., (*3)

Then use \Danoha\DateRange and \Danoha\DateRangeCollection classes directly in your code., (*4)

Usage

Working with date range:, (*5)

$range = new \Danoha\DateRange($from, $to); // any parameter can be NULL
$range
    ->join($thatRange)
    ->intersect([ $from, $to ]) // methods accepting range also accept array
    ->contains($currentDate);

Work with date range collection:, (*6)

$coll = new \Danoha\DateRangeCollection([
    [ $from, $to ], // two items per range accepted
    [ 'from' => $from, 'to' => $to, ], // accepted too

    [ $from, NULL, ], // NULL means indefinite interval
    [ NULL, NULL, ], // and can be used on both sides
]);

$coll
    ->join($thatCollection)
    ->intersect([ $range1, $range2 ]) // methods accepting collection also accept array
    ->contains($someRange);

To get your ranges back:, (*7)

$coll->getRanges() === [
    new \Danoha\DateRange($from, $to),
    new \Danoha\DateRange($from, NULL),
];

$coll->unwrap() === [
    [ 'from' => $from, 'to' => $to, ], // every range has this exact format
    [ 'from' => $from, 'to' => NULL, ], // regardless of what was passed to constructor
    ...
];

Every method that accepts collection also accepts array of ranges (which can be arrays, too):, (*8)

$coll->intersect(
    // another collection
    new \Danoha\DateRangeCollection([ ... ])
);

$coll->intersect([
    // inlined collection (same as constructor)
    [ 'from' => $from, 'to' => $to, ]
]);

Note: definite intervals are handled as inclusive on both sides., (*9)

Available range methods

Note: all methods returning range return new instance. That means calling $range->join(...) twice on the same range will create two instances and neither of them will contain both joined ranges., (*10)

  • getFrom - returns first date in range,
  • getTo - returns last date in range,
  • unwrap - gets range in array format,
  • intersect - finds intersection between current and given range,
  • overlaps - tests if current and given range overlap,
  • join - finds common range between current and given range,
  • isRightAfter - tests if current range is right after given range,
  • isRightBefore - tests if current range is right before given range,
  • subtract - returns collection of differences between current and given range,
  • includes - tests if range includes given date or range,
  • includesDate - tests if range includes given date,
  • includesRange - tests if range includes given range,
  • equals - tests if current range is equal to given range.

Available collection methods

Note: all methods returning collection return new instance. That means calling $coll->add(...) twice on the same collection will create two instances and neither of them will contain both added ranges., (*11)

  • getRanges - gets ranges in current collection,
  • unwrap - gets underlying date ranges in array format,
  • add - adds given ranges to collection,
  • includes - tests if collection includes given date or range,
  • join - adds given ranges to current collection and joins ranges in current collection if possible,
  • intersect - calculates all intersections with given ranges,
  • subtract - subtracts given ranges from current collection.

The Versions

08/06 2017

dev-master

9999999-dev

Working with date ranges made easy.

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

by Daniel Stříbrný

08/06 2017

v1.1.0

1.1.0.0

Working with date ranges made easy.

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

by Daniel Stříbrný

07/06 2017

v1.0.1

1.0.1.0

Working with date ranges made easy.

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

by Daniel Stříbrný

07/06 2017

v1.0

1.0.0.0

Working with date ranges made easy.

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

by Daniel Stříbrný