Я перепробовал все ответы на этот распространенный вопрос о SO и до сих пор не могу заставить это работать. Вот мой код:
$datetime = strip_tags($object->field_field_date[0]['rendered']['#markup']);
$dt = DateTime::createFromFormat('l, F d, Y - H:s', $datetime);
$date = $dt->format('l, M\. jS \a\t g:s a'); // ERROR
Это:
var_dump($datetime);
var_dump($dt);
Возвращает это:
string(33) "Friday, September 4, 2015 - 18:00"object(DateTime)#501 (3) { ["date"]=>string(26) "2015-09-04 18:00:00.000000"["timezone_type"]=>
int(3)
["timezone"]=>
string(19) "America/Los_Angeles"}
Я полагаю, что-то не так с $datetime
переменная, потому что, если я использую следующее, я больше не получаю ошибку.
$datetime = strip_tags('<b>Friday, September 4, 2015 - 18:00</b>');
Есть идеи, что здесь происходит не так?
Может быть, немного больше обработки ошибок поможет …
$datetime = strip_tags($object->field_field_date[0]['rendered']['#markup']);
$dt = DateTime::createFromFormat('l, F d, Y - H:s', $datetime);
if ( !is_object($dt) ) {
trigger_error( sprintf('failed to create datetime from [%s]', $object->field_field_date[0]['rendered']['#markup']) );
}
else {
$date = $dt->format('l, M\. jS \a\t g:s a');
Других решений пока нет …