Что случилось с объектом DateTime

Может любой говорить что не так с кодом.

$timezone = "Asia/Karachi"; 
$date = new DateTime($when_to_send, new DateTimeZone($timezone));
$date = $date->setTimezone(new DateTimeZone('GMT')); 
$when_to_send = $date->format('Y-m-d H:i:s');

ошибка: Звоните в формат функции членства () на необъекте

5
задан Ayaz Alavi 31 May 2010 в 12:43
поделиться

4 ответа

$date = $date->setTimezone(new DateTimeZone('GMT'));

Делает переменную $date нулевой, вы должны просто вызвать ее:

$date->setTimezone(new DateTimeZone('GMT'));

11
ответ дан 18 December 2019 в 07:53
поделиться

Если вы используете не PHP 5.3.0 (как написано в руководстве, которое вы, конечно, прочитали, прежде чем задать вопрос, верно?), setTimezone вернет NULL вместо измененного DateTime. Вы используете как минимум PHP 5.3.0?

6
ответ дан 18 December 2019 в 07:53
поделиться

Согласно руководству , setTimeZone вернет либо объект DateTime или FALSE , если не удается установить часовой пояс. Сохранять возврат на самом деле не нужно, потому что это изменит объект DateTime , который вы ему передали.

Возможно, вам следует проверить, удалось ли выполнить setTimezone , прежде чем устанавливать для объекта $ date возвращаемое значение:

$timezone = "Asia/Karachi";
$date = new DateTime($when_to_send, new DateTimeZone($timezone));

if (! ($date && $date->setTimezone(new DateTimeZone('GMT'))) ) {
    # unable to adjust from local timezone to GMT!
    # (display a warning)
}

$when_to_send = $date->format('Y-m-d H:i:s');
2
ответ дан 18 December 2019 в 07:53
поделиться

Спасибо всем, кто помог, но только правильный ответ может быть отмечен. Правильный код:

$timezone = "Asia/Karachi"; 
$date = new DateTime($when_to_send, new DateTimeZone($timezone));
$date->setTimezone(new DateTimeZone('GMT')); 
$when_to_send = $date->format('Y-m-d H:i:s');
1
ответ дан 18 December 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: