Рассчитать фактическое время из разных часовых поясов в php - PullRequest
0 голосов
/ 10 мая 2010

Hai,

Я бы хотел рассчитать фактическое время из разных часовых поясов. У меня есть две таблицы MySQL

1. Таблица времени: Эта таблица содержит два поля (значение смещения, название страны) значения (-12: 00, Эниветок, Кваджалейн) (-11: 00, Мидуэй, Самоа) .... и т. д.

2. Мой рабочий стол Эта таблица содержит сведения о сотрудниках с двумя именами полей (create_on, timezone) и значениями (текущая метка времени, -11: 00) (текущая метка времени, -12: 00) ..... и так далее

Теперь, если мой сотрудник вошел в мою систему, я хочу отобразить время в соответствии со значениями часовых поясов из таблиц.

В основном, если мой Текущее время: 2010-05-10 15:41:39 значения смещения: +5: 30

мой результат должен быть: 10 мая 2010 3:41 вечера * 10101

одинаково для разных значений смещения для одной и той же текущей отметки времени. Мне кажется, я правильно объяснил проблему, если вам нужна какая-либо информация, пожалуйста, спросите меня.

Ответы [ 3 ]

0 голосов
/ 10 мая 2010
  1. Используйте timestamp тип данных для хранения всех дат в вашем приложении
  2. для каждого сотрудника сохранить его часовой пояс в формате названия часового пояса. Пример: "Азия / Владивосток"
  3. После идентификации сотрудника сразу после mysql_connect - отправьте еще один запрос, чтобы указать, какой часовой пояс используется сейчас. Это можно сделать с помощью запроса mysql SET time_zone=TZ, где TZ const - это сдвиг во времени, например, "+10: 00", или, если вам повезет, и на вашем сервере mysql импортирована коллекция часовых поясов - более корректно, например: "Азия / Владивосток "(SET time_zone="Asia/Vladivostok")
  4. Также - не забудьте указать часовой пояс php с ini_set('date.timezone', TZ) или уже упоминавшимся date_default_timezone_set()
0 голосов
/ 12 мая 2010

У вас, похоже, проблема с вашими данными.

Таблица сотрудников содержит фиксированные смещения часового пояса для прошлых событий - предположительно, когда были созданы профили - но они не обязательно могут использоваться для определения смещений для будущих событий, так как во многих местах используется летнее время (DST).

В настоящий момент таблица часовых поясов кажется избыточной, поскольку вы не можете сделать перекрестную ссылку на сотрудников. И снова смещения будут меняться из-за летнего времени.

Обычно вы сохраняете местоположение для каждого пользователя в вашей базе данных, а затем используете что-то вроде date_default_timezone_set(), чтобы правильно отображать время для этого местоположения.

0 голосов
/ 10 мая 2010

Я считаю, что вы ищете date_default_timezone_set ()

date_default_timezone_set () устанавливает часовой пояс по умолчанию, используемый всеми функциями даты / времени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...