Skip to content

Commit 3517451

Browse files
committed
LocalDateRange::toInterval
1 parent f013742 commit 3517451

11 files changed

Lines changed: 444 additions & 0 deletions

File tree

.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/date-time.iml

Lines changed: 80 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/php.xml

Lines changed: 103 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/phpunit.xml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/LocalDateRange.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,25 @@ public function jsonSerialize(): string
244244
return (string) $this;
245245
}
246246

247+
/**
248+
* Converts this LocalDateRange to Interval instance.
249+
*
250+
* The result is Interval from 00:00 start date and 00:00 end date + one day (because end in Interval is exclude)
251+
* in the given time-zone.
252+
*/
253+
public function toInterval(TimeZone $timeZone): Interval
254+
{
255+
$startZonedDateTime = $this->getStart()
256+
->atTime(LocalTime::min())
257+
->atTimeZone($timeZone);
258+
$endZonedDateTime = $this->getEnd()
259+
->plusDays(1)
260+
->atTime(LocalTime::min())
261+
->atTimeZone($timeZone);
262+
263+
return $startZonedDateTime->getIntervalTo($endZonedDateTime);
264+
}
265+
247266
/**
248267
* Converts this LocalDateRange to a native DatePeriod object.
249268
*

0 commit comments

Comments
 (0)