diff --git a/src/RRuleTrait.php b/src/RRuleTrait.php index 490b824..cc26403 100755 --- a/src/RRuleTrait.php +++ b/src/RRuleTrait.php @@ -212,7 +212,7 @@ trait RRuleTrait $date = new \DateTime($date->format('Y-m-d H:i:s'), $date->getTimezone()); } else { - $date->setTime( + $date = $date->setTime( $date->format('H'), $date->format('i'), $date->format('s'), @@ -222,4 +222,4 @@ trait RRuleTrait return $date; } -} \ No newline at end of file +} diff --git a/tests/RRuleTest.php b/tests/RRuleTest.php index fc19572..b4e8e6e 100755 --- a/tests/RRuleTest.php +++ b/tests/RRuleTest.php @@ -3238,4 +3238,31 @@ class RRuleTest extends TestCase $expected = extension_loaded('intl') ? $withIntl : $withoutIntl; $this->assertEquals($expected, $rrule->humanReadable($options)); } + + /** + * @var \DateTimeInterface|string + * + * @dataProvider dataForTestParseDate + */ + public function testParseDate($dateTime, \DateTimeInterface $expectedDateTime) + { + $parsed = RRule::parseDate($dateTime); + + $this->assertEquals($expectedDateTime->format('U.u'), $parsed->format('U.u')); + } + + /** + * @return list> + */ + public function dataForTestParseDate() + { + $dateTimeImmutableMicroseconds = new \DateTimeImmutable('2023-04-27 12:13:14.567'); + $dateTimeImmutableNoMicroseconds = new \DateTimeImmutable('2023-04-27 12:13:14'); + return [ + ['2023-04-27 12:13:14', new DateTime('2023-04-27 12:13:14')], + ['2023-04-27 12:13:14.123', new DateTime('2023-04-27 12:13:14')], + [new DateTime('2023-04-27 12:13:14'), new DateTime('2023-04-27 12:13:14')], + [$dateTimeImmutableMicroseconds, $dateTimeImmutableNoMicroseconds], + ]; + } }