#php #javascript #mysql #timezone
#php #javascript #mysql #Часовой пояс
Вопрос:
У меня есть ведущий и просмотрщик на сайте, сотрудничающие по всему миру, они оба являются зарегистрированными пользователями, их местоположение (город / штат / страна) хранится в mysql
время встречи отображается обоим пользователям на php на основе местного времени одного из пользователей, я бы хотел, чтобы время другого пользователя было соответствующим образом скорректировано в зависимости от местоположения первого пользователя. (учитывая переход на летнее время в США)
или альтернативно
я бы хотел, чтобы все часы часового пояса США отображались на веб-странице
как это можно сделать?
Комментарии:
1. Не могли бы вы сохранить время как UTC / Zulu / Epoch / GMT в базе данных и позволить javascript обрабатывать часовой пояс? Или вы хотите, чтобы часовой пояс был связан с местоположением базы данных, а не с текущим местоположением компьютера?
Ответ №1:
В базе данных я бы сохранил исходное время встречи в UTC. У меня также было бы поле в таблице пользователей для назначения категории TZ.
В эту дату активен простой if / then для перехода на летнее время, а затем преобразуйте время.
Я бы использовал php для всего этого. Поскольку вы можете объединить запрос базы данных, чтобы включить изменение UTC TZ в один и тот же запрос. Затем, при необходимости, настройте переход на летнее время.
- извлеките время собрания из таблицы собраний и информацию о TZ из таблицы пользователей (тот же запрос)
- проверьте переход на летнее время
- отрегулируйте время на основе вышеизложенного
- отправка результатов на страницу.
Ответ №2:
Сохраняйте все время по всему миру в UTC. При отображении времени сначала выясните, в каком часовом поясе находится пользователь (на стороне клиента или сервера), и соответствующим образом измените время с помощью php или javascript. При настройке времени убедитесь, что вы также исключили часовой пояс пользователя из уравнения и снова сохранили его как UTC.
Ответ №3:
Это можно сделать с помощью javascript и (cookie witch может сохранить часовой пояс клиента или ajax для отправки его обратно на сервер). Затем вы можете использовать его в PHP-скрипте для внесения изменений. В javascript используйте метод getTimezoneOffset(). Вот простой скрипт для его использования:
<script type="text/javascript">
var d = new Date()
var gmtHours = -d.getTimezoneOffset()/60;
document.write("The local time zone is: GMT " gmtHours);
</script>