Skip to content

Commit 8eee496

Browse files
authored
Replace DateTime with DateTimeImmutable (#39)
1 parent 0def268 commit 8eee496

1 file changed

Lines changed: 20 additions & 17 deletions

File tree

src/AbsoluteDate.php

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
namespace AssoConnect\PHPDate;
66

77
use AssoConnect\PHPDate\Exception\ParsingException;
8+
use DateTimeImmutable;
9+
use DateTimeZone;
810

911
class AbsoluteDate implements \Stringable
1012
{
1113
public const DEFAULT_DATE_FORMAT = 'Y-m-d';
1214

13-
private \DateTimeImmutable $datetime;
15+
private DateTimeImmutable $datetime;
1416

1517
/**
1618
* AbsoluteDate constructor from a date as string
@@ -78,22 +80,22 @@ public function modify(string $modifier): self
7880
/**
7981
* Return the DateTime for a given DateTimeZone
8082
*/
81-
public function startsAt(\DateTimeZone $timezone): \DateTimeImmutable
83+
public function startsAt(DateTimeZone $timezone): DateTimeImmutable
8284
{
8385
return $this->getDateTimeFromFormatAndTimezone(self::DEFAULT_DATE_FORMAT, $timezone);
8486
}
8587

8688
/**
8789
* Return the DateTime at the end of the day for a given DateTimeZone
8890
*/
89-
public function endsAt(\DateTimeZone $timezone): \DateTimeImmutable
91+
public function endsAt(DateTimeZone $timezone): DateTimeImmutable
9092
{
9193
return $this->getDateTimeFromFormatAndTimezone(self::DEFAULT_DATE_FORMAT . ' 23:59:59', $timezone);
9294
}
9395

94-
private function getDateTimeFromFormatAndTimezone(string $format, \DateTimeZone $timezone): \DateTimeImmutable
96+
private function getDateTimeFromFormatAndTimezone(string $format, DateTimeZone $timezone): DateTimeImmutable
9597
{
96-
return new \DateTimeImmutable($this->format($format), $timezone);
98+
return new DateTimeImmutable($this->format($format), $timezone);
9799
}
98100

99101
/**
@@ -174,42 +176,43 @@ public function __toString(): string
174176
/**
175177
* Returns an AbsoluteDate instance
176178
*
177-
* @param \DateTimeZone $timezone Timezone to use to get the right date
179+
* @param DateTimeZone $timezone Timezone to use to get the right date
178180
* @param \DateTimeInterface|null $datetime Point in time to find the date from
179181
* @throws \Exception
180182
*/
181-
public static function createInTimezone(\DateTimeZone $timezone, \DateTimeInterface $datetime = null): self
183+
public static function createInTimezone(DateTimeZone $timezone, \DateTimeInterface $datetime = null): self
182184
{
183-
$datetime = new \DateTime('@' . (null === $datetime ? time() : $datetime->getTimestamp()));
184-
$datetime->setTimezone($timezone);
185-
186-
return new self($datetime->format(self::DEFAULT_DATE_FORMAT));
185+
return new self(
186+
(new DateTimeImmutable('@' . (null === $datetime ? time() : $datetime->getTimestamp())))
187+
->setTimezone($timezone)
188+
->format(self::DEFAULT_DATE_FORMAT)
189+
);
187190
}
188191

189192
/**
190193
* Returns an AbsoluteDate instance from a relative format in a given timezone
191194
*
192195
* @param string $relative Relative format to use
193-
* @param ?\DateTimeZone $timezone Timezone to use to get the right date
196+
* @param ?DateTimeZone $timezone Timezone to use to get the right date
194197
*/
195-
public static function createRelative(string $relative = 'now', \DateTimeZone $timezone = null): self
198+
public static function createRelative(string $relative = 'now', DateTimeZone $timezone = null): self
196199
{
197200
if (null === $timezone) {
198-
$timezone = new \DateTimeZone('UTC');
201+
$timezone = new DateTimeZone('UTC');
199202
}
200203

201-
$datetime = new \DateTime($relative, $timezone);
204+
$datetime = new DateTimeImmutable($relative, $timezone);
202205

203206
return self::createInTimezone($timezone, $datetime);
204207
}
205208

206209
private function initDatetime(string $date, string $format): void
207210
{
208-
$timezone = new \DateTimeZone('UTC');
211+
$timezone = new DateTimeZone('UTC');
209212
$format .= 'H:i:s';
210213
$date .= '00:00:00';
211214

212-
$datetime = \DateTimeImmutable::createFromFormat($format, $date, $timezone);
215+
$datetime = DateTimeImmutable::createFromFormat($format, $date, $timezone);
213216

214217
if (false === $datetime) {
215218
throw new ParsingException(sprintf('Cannot parse %s with format %s', $date, $format));

0 commit comments

Comments
 (0)