From 1c968a6dfacc8e0b24598108cb15b4e0c610c0da Mon Sep 17 00:00:00 2001 From: KyleKatarn Date: Mon, 28 Jun 2021 22:34:24 +0200 Subject: [PATCH] Fix #2368 pad left trailing zeros in createFromTimestamp() --- src/Carbon/Traits/Timestamp.php | 1 + tests/CarbonImmutable/CreateFromTimestampTest.php | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/Carbon/Traits/Timestamp.php b/src/Carbon/Traits/Timestamp.php index 23b5efc9b..e52a2b942 100644 --- a/src/Carbon/Traits/Timestamp.php +++ b/src/Carbon/Traits/Timestamp.php @@ -45,6 +45,7 @@ public static function createFromTimestampUTC($timestamp) $delta = floor($decimal / static::MICROSECONDS_PER_SECOND); $integer += $delta; $decimal -= $delta * static::MICROSECONDS_PER_SECOND; + $decimal = str_pad((string) $decimal, 6, '0', STR_PAD_LEFT); return static::rawCreateFromFormat('U u', "$integer $decimal"); } diff --git a/tests/CarbonImmutable/CreateFromTimestampTest.php b/tests/CarbonImmutable/CreateFromTimestampTest.php index 060ccf974..869065755 100644 --- a/tests/CarbonImmutable/CreateFromTimestampTest.php +++ b/tests/CarbonImmutable/CreateFromTimestampTest.php @@ -189,6 +189,14 @@ public function testCreateFromMicrotimeFloat() $this->assertSame('America/Toronto', $d->tzName); $this->assertSame('2020-09-23 14:52:44.889523', $d->format('Y-m-d H:i:s.u')); $this->assertSame('1600887164.889523', $d->format('U.u')); + + $microtime = 1600887164.0603; + $d = Carbon::createFromTimestamp($microtime); + $this->assertSame('America/Toronto', $d->tzName); + $this->assertSame('2020-09-23 14:52:44.060300', $d->format('Y-m-d H:i:s.u')); + $this->assertSame('1600887164.060300', $d->format('U.u')); + + $this->assertSame('010000', Carbon::createFromTimestamp(0.01)->format('u')); } public function testCreateFromMicrotimeStrings()