Может любой говорить что не так с кодом.
$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');
ошибка: Звоните в формат функции членства () на необъекте
$date = $date->setTimezone(new DateTimeZone('GMT'));
Делает переменную $date нулевой, вы должны просто вызвать ее:
$date->setTimezone(new DateTimeZone('GMT'));
Если вы используете не PHP 5.3.0 (как написано в руководстве, которое вы, конечно, прочитали, прежде чем задать вопрос, верно?), setTimezone
вернет NULL вместо измененного DateTime. Вы используете как минимум PHP 5.3.0?
Согласно руководству , 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');
Спасибо всем, кто помог, но только правильный ответ может быть отмечен. Правильный код:
$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');