Я думаю, что в конечном итоге я воспользуюсь этим решением:
sscanf( '17082011T1015', '%02s%02s%04sT%02s%02s', $day, $month, $year, $hours, $minutes );
$datetime = $year . '-' . $month . '-' . $day . ' ' . $hours . ':' . $minutes;
Прежде чем задавать вопрос, я не осознавал, что могу использовать дополнительные аргументы для sscanf()
в свою пользу, и подумал, что будуприходится прибегать к чему-то вроде этого:
$parsed = sscanf( '17082011T1015', '%02s%02s%04sT%02s%02s' );
$datetime = $parsed[ 2 ] . '-' . $parsed[ 1 ] . '-' . $parsed[ 0 ] . ' ' . $parsed[ 3 ] . ':' . $parsed[ 4 ];
Не так уж и плохо, но мне нравится быть достаточно ясным с именованными переменными, чтобы было очевидно, что делает эта маленькая подпрограмма.