Что не так с объектом DateTime - PullRequest
5 голосов
/ 31 мая 2010

Может кто-нибудь сказать, что не так с кодом.

$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');

Ошибка: Вызов функции-члена format () для необъекта

Ответы [ 4 ]

11 голосов
/ 31 мая 2010

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

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

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

6 голосов
/ 31 мая 2010

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

2 голосов
/ 31 мая 2010

Согласно руководству , 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');
1 голос
/ 31 мая 2010

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

$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');
...