У меня есть база данных MySQL с большим количеством данных, хранящихся с отметками времени в UTC.
Когда пользователь запрашивает эту базу данных, я хочу, чтобы они могли просматривать данные, но в их локальном часовом поясе.
Я бы предпочел не рассчитывать смещение каждый раз и изменять метку времени с помощью PHP-кода. Есть ли другой путь?
Вы можете использовать функцию localtime()
для получения локального времени и поиска соответствующих записей из базы данных.
Можно установить часовой пояс для каждого соединения с mysql следующим образом:
SET time_zone = 'America/Los_Angeles';
или
SET time_zone = '-8:00';
Но для меня лучшим решением будет localtime();
Там, где я работаю, мы поддерживаем клиентов по всему миру, и нам стало проще даже установить системное время сервера для UTC. Это позволяет нам обеспечить согласованную регистрацию и временные метки базы данных, и если нам нужно добавить серверы в пул в другой часовой пояс, нам не нужно беспокоиться о том, правильно ли установлено местное время (b / c – это уже UTC).
Однако есть стоимость, как указано в OP, наше приложение должно вычислять временные интервалы. Мы назначаем часовой пояс для наших клиентов, и пользователь, подписавший на клиентский сайт, получает часовой пояс клиента, поэтому нам приходится каждый раз вычислять дату / отметки времени для презентации. Мы иногда просматриваем наши приложения, и эти изменения в часовом поясе едва регистрируются.
В конце концов, это действительно зависит от вас и вашей ситуации, когда вы имеете дело с изменениями часового пояса.