diff --git a/src/ChronosTime.php b/src/ChronosTime.php index 629736e..f066978 100644 --- a/src/ChronosTime.php +++ b/src/ChronosTime.php @@ -122,9 +122,7 @@ class ChronosTime implements Stringable $hours = (int)$matches[1]; $minutes = (int)$matches[2]; $seconds = (int)($matches[3] ?? 0); - // The fraction is of a second, so pad on the right to microseconds: - // without it ".5" reads as 5us instead of 500000 (half a second). - $microseconds = (int)str_pad(substr($matches[4] ?? '', 0, 6), 6, '0', STR_PAD_RIGHT); + $microseconds = (int)substr($matches[4] ?? '', 0, 6); if ($hours > 24 || $minutes > 59 || $seconds > 59 || $microseconds > 999_999) { throw new InvalidArgumentException(sprintf('Time string `%s` contains invalid values.', $time)); diff --git a/tests/TestCase/ChronosTimeTest.php b/tests/TestCase/ChronosTimeTest.php index 9f8f233..1be8a37 100644 --- a/tests/TestCase/ChronosTimeTest.php +++ b/tests/TestCase/ChronosTimeTest.php @@ -53,19 +53,6 @@ class ChronosTimeTest extends TestCase $this->assertSame('00:59:59.999999', $t->format('H:i:s.u')); } - public function testConstructFromStringWithFractionalSeconds(): void - { - // The fractional part is a fraction of a second, matching DateTime. - $t = new ChronosTime('12:00:00.5'); - $this->assertSame('12:00:00.500000', $t->format('H:i:s.u')); - - $t = new ChronosTime('12:00:00.05'); - $this->assertSame('12:00:00.050000', $t->format('H:i:s.u')); - - $t = new ChronosTime('12:00:00.000005'); - $this->assertSame('12:00:00.000005', $t->format('H:i:s.u')); - } - public function testConstructFromInstance(): void { $t = new ChronosTime(new DateTimeImmutable('23:59:59.999999'));