szymat/date-time-interval-advanced

Advanced use of string date intervals

1.0.1 2021-08-06 21:36 UTC

This package is auto-updated.

Last update: 2025-03-07 05:43:11 UTC


README

Package for more flexible date interval usage. getDate works with any DateInterval implementing class.

Install

composer require szymat/date-time-interval-advanced

Format

-P*|H:i:s

`-` => defines if period will be added or subtracted
`P*` => Standard PHP DateInterval format 
'|H:i:s' => (optional) `|` separator with fixed time to set 

DateInterval Format

Example

// Can be also DateTime object
$date = new DateTimeImmutable('2021-05-12 13:43:10');
$interval = new Interval\Interval('-P1D|23:59:59');
$newDate = $interval->getDate($date); // Will return new object
echo $date->format('Y-m-d H:i:s') . ' => '.$newDate->format('Y-m-d H:i:s') . "\n";

Will output

2021-05-12 13:43:10 => 2021-05-11 23:59:59
$date = new DateTimeImmutable('2021-05-12 13:43:10');
$interval = new Interval\Interval('P15D|14:00');
$newDate = $interval->getDate($date);
echo $date->format('Y-m-d H:i:s') . ' => '.$newDate->format('Y-m-d H:i:s') . "\n";

Will output

2021-05-12 13:43:10 => 2021-05-27 14:00:10
$date = new DateTimeImmutable('2021-05-12 13:43:10');
$interval = new Interval\Interval('-P5D');
$newDate = $interval->getDate($date);
echo $date->format('Y-m-d H:i:s') . ' => '.$newDate->format('Y-m-d H:i:s') . "\n";

Will output

2021-05-12 13:43:10 => 2021-05-07 13:43:10