Конвертация формата даты приводит к «Вызову функции-члена format () при необъектной ошибке»

1

Я пробовал все ответы на этот общий вопрос о 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
string-formatting

1 ответ

0

Может быть, немного больше обработки ошибок поможет...

$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');
  • 0
    Это полезно Мой приведенный выше код находится в цикле, и ваше предложение показывает, что существует проблема с данными в первом случае, которая приводила к сбою всего сценария. Еще нужно больше расследовать, но я все ближе. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню