Skip to content

Commit ebcc83a

Browse files
committed
introduce legacy parameter in datetime
1 parent a20c7e6 commit ebcc83a

File tree

4 files changed

+18
-8
lines changed

4 files changed

+18
-8
lines changed

src/Formatter/Specialised/BoltOGMTranslator.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,12 @@ private function makeFromBoltDuration(BoltDuration $duration): Duration
142142

143143
private function makeFromBoltDateTime(BoltDateTime $datetime): DateTime
144144
{
145-
return new DateTime($datetime->seconds(), $datetime->nanoseconds(), $datetime->tz_offset_seconds());
145+
return new DateTime(
146+
$datetime->seconds(),
147+
$datetime->nanoseconds(),
148+
$datetime->tz_offset_seconds(),
149+
!$datetime instanceof \Bolt\protocol\v5\structures\DateTime
150+
);
146151
}
147152

148153
private function makeFromBoltTime(BoltTime $time): Time

src/Formatter/Specialised/JoltHttpOGMTranslator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ private function translateDateTime(string $datetime): Date|LocalDateTime|LocalTi
371371

372372
$offset = $this->offsetFromMatches($matches);
373373

374-
return new DateTime($seconds, $nanoseconds, $offset);
374+
return new DateTime($seconds, $nanoseconds, $offset, true);
375375
}
376376

377377
if (str_starts_with($datetime, 'P')) {

src/Formatter/Specialised/LegacyHttpOGMTranslator.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -480,10 +480,10 @@ private function translateDateTime(string $value): DateTime
480480
}
481481

482482
if ($tz !== null) {
483-
return new DateTime($dateTime->getTimestamp(), (int) $milliseconds * 1_000_000, $tz);
483+
return new DateTime($dateTime->getTimestamp(), (int) $milliseconds * 1_000_000, $tz, true);
484484
}
485485

486-
return new DateTime($dateTime->getTimestamp(), (int) $milliseconds * 1_000_000, 0);
486+
return new DateTime($dateTime->getTimestamp(), (int) $milliseconds * 1_000_000, 0, true);
487487
}
488488

489489
private function translateLocalDateTime(string $value): LocalDateTime

src/Types/DateTime.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ final class DateTime extends AbstractPropertyObject implements BoltConvertibleIn
3434
public function __construct(
3535
private int $seconds,
3636
private int $nanoseconds,
37-
private int $tzOffsetSeconds
37+
private int $tzOffsetSeconds,
38+
private bool $legacy
3839
) {}
3940

4041
/**
@@ -72,9 +73,13 @@ public function toDateTime(): DateTimeImmutable
7273
foreach (DateTimeZone::listAbbreviations() as $tz) {
7374
/** @psalm-suppress all */
7475
if ($tz[0]['offset'] === $this->getTimeZoneOffsetSeconds()) {
75-
return (new DateTimeImmutable(sprintf('@%s', $this->getSeconds())))
76-
->modify(sprintf('+%s microseconds', $this->nanoseconds / 1000))
77-
->setTimezone(new DateTimeZone($tz[0]['timezone_id']));
76+
$dateTime = new DateTimeImmutable(sprintf('@%s', $this->getSeconds()));
77+
78+
if ($this->legacy) {
79+
$dateTime = $dateTime->modify(sprintf('+%s microseconds', $this->nanoseconds / 1000));
80+
}
81+
82+
return $dateTime->setTimezone(new DateTimeZone($tz[0]['timezone_id']));
7883
}
7984
}
8085

0 commit comments

Comments
 (0)