Я разбираю фид, который возвращает дату в форме:
20150129180000
который должен быть [yyyy] [mm] [dd] [hours] [minutes] [seconds]
Я попытался форматировать это с помощью функции php date():
date('Y-m-d H:i:s', $event['start-dt'])
и получил это:
640502-03-05 12:33:20
что явно не так. Есть ли гладкий способ преобразования этого, или мне просто нужно объединить строку вручную?
$date = DateTime::createFromFormat('YmdHis', '20150129180000');
echo $date->format('Y-m-d H:i:s');
Формат несколько запутан по сравнению с date
пока вы к ней не привыкли, но это соответствует вашей строке даты:
$date = DateTime::createFromFormat('YmdGis', '20150129180000');
echo $date->format('Y-m-d H:i:s');
Вы можете использовать preg_replace для форматирования строки
$date_str = preg_replace("/^(\d){4}(\d){2}(\d){2}(\d){2}(\d){2}(\d){2}/","$1-$2-$3 $4:$5:$6",$event["start-dt"]);
date('Y-m-d H:i:s', strtotime($date_str));
Или используйте объект php DateTime
$date = new DateTime($date_str);
Или еще лучше, используйте метод DataTime createFromFormat
$format = "YmdGis";
$dateObj = DateTime::createFromFormat ( $format, $event['start-dt'] );
Затем вы можете использовать getTimestamp для получения метки времени для вычислений, если вам это нужно.