PHP / MySQL отметка времени и часовые пояса - PullRequest
3 голосов
/ 01 января 2011

Если я получу текущую метку времени с помощью функции NOW () в MySQL, могу ли я получить это поле с помощью php и указать это время в разных часовых поясах? Как преобразовать текущее время в текущем часовом поясе в другой часовой пояс?

Ответы [ 2 ]

5 голосов
/ 01 января 2011

Вы можете использовать класс DateTimeZone:

$gmt = new DateTimeZone("GMT");
$datetimeInGMT = new DateTime($now, $gmt);

Он также принимает местоположения в форме continent/city, например, Europe/London.

Если ваша дата и время не UTC, вы можете использовать setTimezone:

$datetimeInGMT = new DateTime($now, new DateTimeZone("America/New_York"));
$datetimeInGMT->setTimezone(new DateTimeZone("GMT"));
3 голосов
/ 01 января 2011

Обработка часового пояса в MySQL намного сложнее, чем в PHP.Он обрабатывает простой часовой пояс (EST, PST и т. Д.) И то, что я назову «региональными часовыми поясами» (Америка / Восток).При использовании региональных зон используется правильное преобразование, включая переход на летнее время, даже когда правила летнего времени менялись за эти годы.

Я сохранил все мои даты в формате UTC с использованием функции MySQL UTC_TIMESTAMP ().Затем в запросах я использую функцию MySQL CONVERT_TZ () для моего целевого часового пояса.http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

Примечание. Возможно, вам потребуется обновить таблицы часовых поясов.http://dev.mysql.com/downloads/timezones.html

...