fyre / period
A Date Period library.
Requires
- fyre/datetime: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- fyre/php-cs-fixer-config: ^1.0
- phpunit/phpunit: ^11
README
FyrePeriod is a free, open-source date period library for PHP.
Table Of Contents
Installation
Using Composer
composer require fyre/period
Periods
use Fyre\Period\Period;
$start
is a DateTime or string representing the start date.$end
is a DateTime or string representing the end date.$granularity
is a string representing the granularity, and can be one of either "year", "month", "day", "hour", "minute" or "second", and will default to "day".$excludeBoundaries
is a string representing the excluded boundaries, and can be one of either "none", "start", "end" or "both", and will default to "none".
$period = new Period($start, $end, $granularity, $excludeBoundaries);
The Period is an implementation of an Iterator and can be used in a foreach loop.
foreach ($period AS $date) { }
Contains
Determine whether this period contains another Period.
$other
is the Period to compare against.
$contains = $period->contains($other);
Diff Symmetric
Get the symmetric difference between the periods.
$other
is the Period to compare against.
$diffSymmetric = $period->diffSymmetric($other);
This method will return a new PeriodCollection.
End
Get the end date.
$end = $period->end();
This method will return a DateTime.
End Equals
Determine whether this period ends on a given date.
$date
is the DateTime to compare against.
$endEquals = $period->endEquals($date);
Ends After
Determine whether this period ends after a given date.
$date
is the DateTime to compare against.
$endsAfter = $period->endsAfter($date);
Ends After Or Equals
Determine whether this period ends on or after a given date.
$date
is the DateTime to compare against.
$endsAfterOrEquals = $period->endsAfterOrEquals($date);
Ends Before
Determine whether this period ends before a given date.
$date
is the DateTime to compare against.
$endsBefore = $period->endsBefore($date);
Ends Before Or Equals
Determine whether this period ends on or before a given date.
$date
is the DateTime to compare against.
$endsBeforeOrEquals = $period->endsBeforeOrEquals($date);
Equals
Determine whether this period equals another Period.
$other
is the Period to compare against.
$equals = $period->equals($other);
Gap
Get the gap between the periods.
$other
is the Period to compare against.
$gap = $period->gap($other);
This method will return a new Period, or null if there's no gap.
Granularity
Get the granularity.
$granularity = $period->granularity();
Included End
Get the included end date.
$includedEnd = $period->includedEnd();
This method will return a DateTime.
Included Start
Get the included start date.
$includedStart = $period->includedStart();
This method will return a DateTime.
Includes End
Determine whether the Period includes the end date.
$includesEnd = $period->includesEnd();
Includes
Determine whether this period includes a given date.
$date
is the DateTime to compare against.
$includes = $period->includes($date);
Includes Start
Determine whether the Period includes the start date.
$includesStart = $period->includesStart();
Length
Get the length of the period.
$length = $period->length();
Overlap
Get the overlap of the periods.
$other
is the Period to compare against.
$overlap = $period->overlap($other);
This method will return a new Period, or null if there's no overlap.
Overlap All
Get the overlap of all the periods.
$overlapAll = $period->overlapAll(...$others);
This method will return a new Period, or null if there's no overlap.
Overlap Any
Get the overlaps of any of the periods.
$overlapAny = $period->overlapAny(...$others);
This method will return a new PeriodCollection.
Overlaps With
Determine whether this period overlaps with another Period.
$other
is the Period to compare against.
$overlapsWith = $period->overlapsWith($other);
Renew
Create a new period with the same length after this period.
$renewed = $period->renew();
This method will return a new Period.
Start
Get the start date.
$start = $period->start();
This method will return a DateTime.
Start Equals
Determine whether this period starts on a given date.
$date
is the DateTime to compare against.
$startEquals = $period->startEquals($date);
Starts After
Determine whether this period starts after a given date.
$date
is the DateTime to compare against.
$startsAfter = $period->startsAfter($date);
Starts After Or Equals
Determine whether this period starts on or after a given date.
$date
is the DateTime to compare against.
$startsAfterOrEquals = $period->startsAfterOrEquals($date);
Starts Before
Determine whether this period starts before a given date.
$date
is the DateTime to compare against.
$startsBefore = $period->startsBefore($date);
Starts Before Or Equals
Determine whether this period starts on or before a given date.
$date
is the DateTime to compare against.
$startsBeforeOrEquals = $period->startsBeforeOrEquals($date);
Subtract
Get the inverse overlap of the periods.
$other
is the Period to compare against.
$subtract = $period->subtract($other);
This method will return a new PeriodCollection.
Subtract All
Get the inverse overlap of all periods.
$subtractAll = $period->subtractAll(...$others);
This method will return a new PeriodCollection.
Touches
Determine whether this period touches another Period.
$other
is the Period to compare against.
$touches = $period->touches($other);
Period Collections
use Fyre\Period\PeriodCollection;
All arguments supplied will be used as periods for the collection.
$periodCollection = new PeriodCollection(...$periods);
The PeriodCollection is an implementation of an Iterator and can be used in a foreach loop.
foreach ($periodCollection AS $period) { }
Add
Add periods to the collection.
All arguments supplied will be used as periods to add to the collection.
$added = $periodCollection->add(...$periods);
This method will return a new PeriodCollection.
Boundaries
Get the boundaries of the collection.
$boundaries = $periodCollection->boundaries();
This method will return a new Period, or null if the collection is empty.
Gaps
Get the the gaps between the periods in the collection.
$gaps = $periodCollection->gaps();
This method will return a new PeriodCollection.
Intersect
Intersect a period with every period in the collection.
$period
is the Period to compare against.
$intersect = $periodCollection->intersect($period);
This method will return a new PeriodCollection.
Overlap All
Get the overlap of all the collections.
All arguments supplied will be used as collections to compare against.
$overlapAll = $periodCollection->overlapAll(...$others);
This method will return a new PeriodCollection.
Sort
Sort the periods.
$sorted = $periodCollection->sort();
This method will return a new PeriodCollection.
Subtract
Get the inverse overlap of the collections.
$others
is the PeriodCollection to compare against.
$subtract = $periodCollection->subtract($others);
This method will return a new PeriodCollection.
Unique
Filter the periods to remove duplicates.
$unique = $periodCollection->unique();
This method will return a new PeriodCollection.