Merge pull request #11958 from annando/issue-11938

Issue 11938: Fix weird date formats
This commit is contained in:
Hypolite Petovan 2022-10-03 13:47:27 -04:00 committed by GitHub
commit 241bd47896
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -135,6 +135,8 @@ class DateTimeFormat
$s = 'now';
}
$s = self::fixDateFormat($s);
/*
* Slight hackish adjustment so that 'zero' datetime actually returns what is intended
* otherwise we end up with -0001-11-30 ...
@ -173,6 +175,29 @@ class DateTimeFormat
return $d->format($format);
}
/**
* Fix weird date formats
*
* @param string $dateString
* @return string
*/
private static function fixDateFormat(string $dateString): string
{
$patterns = [
['#(\w+), (\d+/\d+/\d+) - (\d+:\d+)#', '$1, $2 $3'],
['#(\d+-\d+-\d+)T(\d+:\d+:\d+)ZZ#', '$1T$2Z'],
['#(\d+-\d+-\d+)T(\d+:\d+:\d+\.\d+)ZZ#', '$1T$2Z'],
['#(\w+), (\d+ \w+ \d+) (\d+:\d+:\d+) (.+)#', '$2 $3 $4'],
['#(\d+:\d+) (\w+), (\w+) (\d+), (\d+)#', '$1 $2 $3 $4 $5'],
];
foreach ($patterns as $pattern) {
$dateString = preg_replace($pattern[0], $pattern[1], $dateString);
}
return $dateString;
}
/**
* Checks, if the given string is a date with the pattern YYYY-MM
*