Issue 11938: Fix weird date formats

This commit is contained in:
Michael 2022-10-03 16:12:22 +00:00
parent 168827c8ae
commit 045238070b

View file

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