Skip to content

Commit ebd255a

Browse files
authored
Merge pull request #402 from yann-eugone/fix-DateTimeImmutable-createFromInterface
Fix DateTimeImmutable::createFromInterface error
2 parents 2d46b39 + 3623452 commit ebd255a

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

lib/DateTimeImmutable.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,16 @@ public static function createFromMutable($dateTime): self
239239
return self::createFromRegular($date);
240240
}
241241

242+
public static function createFromInterface(\DateTimeInterface $object): self
243+
{
244+
if ($object instanceof \DateTime) {
245+
$object = self::createFromMutable($object);
246+
} elseif ($object instanceof DateTimeImmutable) {
247+
$object = $object->getInnerDateTime();
248+
}
249+
return self::createFromRegular($object);
250+
}
251+
242252
/**
243253
* @param mixed[] $array
244254
* @return DateTimeImmutable

tests/DateTimeImmutableTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,24 @@ public function testCreateFromMutable(): void
1818

1919
self::assertSame($safeDate->format(\DateTimeInterface::ATOM), $safeImmutableDate->format(\DateTimeInterface::ATOM));
2020
}
21+
22+
/**
23+
* @dataProvider createFromInterfaces
24+
*/
25+
public function testCreateFromInterface(\DateTimeInterface $dateTime): void
26+
{
27+
$safeImmutableDate = \Safe\DateTimeImmutable::createFromInterface($dateTime);
28+
29+
self::assertSame($dateTime->format(\DATE_ATOM), $safeImmutableDate->format(\DATE_ATOM));
30+
}
31+
32+
public function createFromInterfaces(): array
33+
{
34+
return [
35+
[new \DateTime('2022-11-29T14:17:34+00:00')],
36+
[new \Safe\DateTime('2022-11-29T14:17:34+00:00')],
37+
[new \DateTimeImmutable('2022-11-29T14:17:34+00:00')],
38+
[new \Safe\DateTimeImmutable('2022-11-29T14:17:34+00:00')],
39+
];
40+
}
2141
}

0 commit comments

Comments
 (0)