Skip to content

Commit d0cdb08

Browse files
committed
Date decoding rules extended to support more date formats
1 parent a09a45b commit d0cdb08

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

src/Header.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,12 +693,20 @@ private function parseDate(object $header): void {
693693
if (str_contains($date, ' ')) {
694694
$date = str_replace(' ', ' ', $date);
695695
}
696+
if (str_contains($date, ' UT ')) {
697+
$date = str_replace(' UT ', ' UTC ', $date);
698+
}
696699
$parsed_date = Carbon::parse($date);
697700
} catch (\Exception $e) {
698701
switch (true) {
699702
case preg_match('/([0-9]{4}\.[0-9]{1,2}\.[0-9]{1,2}\-[0-9]{1,2}\.[0-9]{1,2}.[0-9]{1,2})+$/i', $date) > 0:
700703
$date = Carbon::createFromFormat("Y.m.d-H.i.s", $date);
701704
break;
705+
case preg_match('/([0-9]{2} [A-Z]{3} [0-9]{4} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} [+-][0-9]{1,4} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} [+-][0-9]{1,4})+$/i', $date) > 0:
706+
$parts = explode(' ', $date);
707+
array_splice($parts, -2);
708+
$date = implode(' ', $parts);
709+
break;
702710
case preg_match('/([0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{4}\ [0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\ UT)+$/i', $date) > 0:
703711
case preg_match('/([A-Z]{2,3}\,\ [0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{4}\ [0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\ UT)+$/i', $date) > 0:
704712
$date .= 'C';

0 commit comments

Comments
 (0)