- var_dump: documentation ( source)
- preg_match: documentation ( source)
- sprintf: documentation ( source)
<?php
$dateTime = '2009-13-11 99:88:56';
preg_match('~(?<date>\d{4}-\d{2}-\d{2})[\s|T](?<time>\d{2}:\d{2}:\d{2})?(?<timezone>[\+|-]\d{2}:\d{2})?~', $dateTime, $matches);
$matches['time'] = array_key_exists('time', $matches) ? $matches['time'] : '00:00:00';
$dateTime = sprintf('%s %s %s', $matches['date'], $matches['time'], $matches['datetime']);
$bla = \DateTime::createFromFormat('Y-m-d H:i:s', $dateTime);
var_dump($bla);