Skip to content

Commit 95c2071

Browse files
committed
fix: Return null instead of error for invalid date formats
1 parent 92bc715 commit 95c2071

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

src/Item.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,7 @@ public function get_date(string $date_format = 'j F Y, g:i a')
672672
return $this->data['date']['parsed'];
673673

674674
default:
675-
return date($date_format, $this->data['date']['parsed']);
675+
return $this->data['date']['parsed'] ? date($date_format, $this->data['date']['parsed']) : null;
676676
}
677677
}
678678

tests/Unit/ItemTest.php

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1318,13 +1318,54 @@ public static function getDateDataProvider(): array
13181318
,
13191319
1168531200,
13201320
],
1321+
'Test RFC 2822/ RFC 5322 formatted date' => [
1322+
<<<XML
1323+
<rss version="2.0">
1324+
<channel>
1325+
<item>
1326+
<pubDate>Thu, 11 Jan 2007 16:00:00 +0000</pubDate>
1327+
</item>
1328+
</channel>
1329+
</rss>
1330+
XML
1331+
,
1332+
1168531200
1333+
],
1334+
'Test date is properly formatted' => [
1335+
<<<XML
1336+
<rss version="2.0">
1337+
<channel>
1338+
<item>
1339+
<pubDate>Thu, 11 Jan 2007 16:00:00 +0000</pubDate>
1340+
</item>
1341+
</channel>
1342+
</rss>
1343+
XML
1344+
,
1345+
'2007-01-11',
1346+
'Y-m-d'
1347+
],
1348+
'Test localized RFC 2822/ RFC 5322 formatted date' => [
1349+
<<<XML
1350+
<rss version="2.0">
1351+
<channel>
1352+
<item>
1353+
<pubDate>Ost, 11 Urt 2007 16:00:00 +0000</pubDate>
1354+
</item>
1355+
</channel>
1356+
</rss>
1357+
XML
1358+
,
1359+
null,
1360+
'Y-m-d'
1361+
],
13211362
];
13221363
}
13231364

13241365
/**
13251366
* @dataProvider getDateDataProvider
13261367
*/
1327-
public function test_get_date(string $data, ?int $expected): void
1368+
public function test_get_date(string $data, $expected, string $format = 'U'): void
13281369
{
13291370
$feed = new SimplePie();
13301371
$feed->set_raw_data($data);
@@ -1334,7 +1375,7 @@ public function test_get_date(string $data, ?int $expected): void
13341375
$item = $feed->get_item(0);
13351376
self::assertInstanceOf(Item::class, $item);
13361377

1337-
self::assertSame($expected, $item->get_date('U'));
1378+
self::assertSame($expected, $item->get_date($format));
13381379
}
13391380

13401381
/**

0 commit comments

Comments
 (0)