преобразование временной метки в местное время с помощью PHP - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь получить временную метку по местному времени с PHP из базы данных MySQL, и я получаю ошибки, исходный код, который я использовал, был таким, который, очевидно, возвращал время UTC:

$timestamp = strtotime($row['created']);
$dt = date('d/m/Y H:i', $timestamp);

Теперь в поиске по предыдущим ответам я нашел этот код:

$date = /* SELECT date FROM database */;
$usersTimezone = new DateTimeZone('America/Vancouver');
$l10nDate = new DateTime($date);
$l10nDate->setTimeZone($usersTimezone);
echo $l10nDate->format('Y-m-d H:i:s');

Но я не смог заставить его работать ... Я попытался добавить date_default_timezone_set ('America / Vancouver');тоже, но это тоже не сработало ... и я внес минимальные изменения только потому, что хочу сохранить его в переменной, а не отражать его.Кроме того, просматривая эту информацию в предыдущем ответе, я не знаю, смогу ли я преобразовать временную метку UTC, или мне нужно вставить запись в моем часовом поясе ранее, чтобы потом преобразовать ее позже.

Спасибо заваше время.

1 Ответ

0 голосов
/ 13 октября 2018

По умолчанию DateTime::construct использует ваш местный часовой пояс.Однако ваше время в UTC, поэтому вам нужно сообщить конструктору, что и , а затем изменить часовой пояс:

$date = '2018-10-13 00:00:00';
$l10nDate = new DateTime($date, new DateTimeZone('UTC'));
$l10nDate->setTimeZone(new DateTimeZone('America/Vancouver'));
echo $l10nDate->format('Y-m-d H:i:s');

Вывод

2018-10-12 17:00:00
...