X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FDateTimeFormat.php;h=862ce6e9affe08e0e87b6df66d1700c442ba8597;hb=b5ad8c3e153976cf3e63753597377f09852d98d7;hp=141fa37f6c3b70c7e87cc855cb5f189b3c55b8f4;hpb=0b6e0566d75e145afb92dca61325fd423ed6f2eb;p=friendica.git diff --git a/src/Util/DateTimeFormat.php b/src/Util/DateTimeFormat.php index 141fa37f6c..862ce6e9af 100644 --- a/src/Util/DateTimeFormat.php +++ b/src/Util/DateTimeFormat.php @@ -1,6 +1,6 @@ getMessage()); + Logger::warning('DateTimeFormat::convert: exception: ' . $e->getMessage()); $d = new DateTime('now', $from_obj); } @@ -173,6 +175,32 @@ class DateTimeFormat return $d->format($format); } + /** + * Fix weird date formats + * + * @see \Friendica\Test\src\Util\DateTimeFormatTest::dataFix() for a list of examples handled by this method. + * @param string $dateString + * @return string + */ + public static function fix(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'], + ['#(\w+ \d+, \d+) - (\d+:\d+)#', '$1, $2'], + ['~(\d+-\d+-\d+)T(\d+:\d+:\d+)+(\d+:\d+)~', '$1T$2+$3'], + ]; + + 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 *