У меня в настоящее время проблема, связанная с мыслью о преобразовании моего времени MySQL в определенный часовой пояс, в зависимости от настроек пользователя.Уточнение часового пояса PHP/MySQL
Все мои времена MySQL хранятся во времени UTC, в следующем формате:
2009-11-08 17:06:40
После того, как я запрос времени, я не совсем уверен, как преобразовать его в соответствующий часовой пояс с помощью PHP.
Таким образом, в приведенном выше примере, я хотел бы показать:
2009-11-08 09:06:40
Вот что я в настоящее время (что, вероятно, должно быть исправлено):
$sql = 'SELECT date FROM mytable';
require("connection.php");
$result = mysql_db_query($DBname,$sql,$link);
while($row = mysql_fetch_assoc($result)) {
$dt_obj = new DateTime($row['date']);
$dt_obj->setTimezone(new DateTimeZone('PST'));
echo $dt_obj;
echo "<br>";
}
Во-первых , Я получаю следующую ошибку:
Catchable fatal error: Object of class DateTime could not be converted to string
Во-вторых, я смущен, когда я настраиваю его правильно, чтобы отобразить время в правильном часовом поясе в любом случае (в данном случае PST).
Любые предложения о том, как это сделать, будут очень признательны. Благодаря!
UPDATE:
Я принял совет GZipp, и модифицировал код выглядеть следующим образом:
$dt_obj->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $dt_obj->format('Y-m-d H:i:s');
Однако, он показывает свое время (на примере сверху), как:
2009-11-08 15:06:40
Любые идеи о том, что может быть причиной этого?
Gzipp, пожалуйста, посмотрите на мое обновление выше. – Dodinas
Какова временная зона вашего сервера по умолчанию (в php.ini вы можете найти ее с помощью default_timezone_get() или phpinfo())? Похоже, он настроен на часовой пояс за 6 часов позади Америки/Los_Angeles) – GZipp
Спасибо за ответ, GZipp.phpinfo() сообщает, что часовой пояс по умолчанию: Америка/Чикаго. – Dodinas