2010-05-10 4 views
0

Hai,Расчет фактического времени из разных часовых поясов в php

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

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

Таблица 2.My employee В этой таблице содержатся сведения о сотрудниках с двумя именами полей (created_on, часовой пояс), а значения (текущая временная метка, -11: 00) (текущая временная метка, -12: 00) ..... так далее

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

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

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

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

+0

Возможный дубликат [Преобразование временной зоны в php] (http: // stackoverflow.com/questions/2505681/timezone-conversion-in-php) – Gordon

ответ

0

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

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

+0

Благодарим вас за ответ, но это не решает мою проблему. – Thinker

+0

По моему опыту, установка часового пояса как в mysql (см. Другой ответ), так и php достаточно, чтобы иметь правильные времена для пользователей по всему миру. Если это не так, вам следует подумать о создании пользовательской функции даты, которая увеличивает или уменьшает временные метки, связанные с часовым поясом текущего пользователя, перед выдачей форматированной даты. – MartinodF

0
  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

Вы, кажется, есть основная проблема с вашими данными.

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

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

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

Смежные вопросы