diff --git a/lib/DateTimeParser.php b/lib/DateTimeParser.php index 4a71931a..5ce9f207 100644 --- a/lib/DateTimeParser.php +++ b/lib/DateTimeParser.php @@ -93,7 +93,7 @@ public static function parseDuration(string $duration): \DateInterval $invert = false; - if ('-' === $matches['plusminus']) { + if (isset($matches['plusminus']) && '-' === $matches['plusminus']) { $invert = true; } diff --git a/tests/VObject/DateTimeParserTest.php b/tests/VObject/DateTimeParserTest.php index b1e7f7cd..cdf0fe99 100644 --- a/tests/VObject/DateTimeParserTest.php +++ b/tests/VObject/DateTimeParserTest.php @@ -34,6 +34,12 @@ public function testParseICalendarDurationDateInterval(): void self::assertEquals($expected, DateTimeParser::parseDuration('-PT3M')); } + public function testParseDurationZero(): void + { + $expected = new \DateInterval('PT0S'); + self::assertEquals($expected, DateTimeParser::parseDuration('P')); + } + public function testParseICalendarDurationFail(): void { $this->expectException(InvalidDataException::class);