Hey Stackfriends = P Я знаю о времени() и функциях даты(), , но я хочу, чтобы пользователь из Китая получил другое время, чем пользователь из Франции. Я не могу использовать JavaScript, потому что я также использую локальное время для некоторых вычислений.Пользователи PHP по местному времени
ответ
Есть два хороших решения:
- запрашивает у пользователя его часового пояса; предварительно выберите вариант по умолчанию, основанный на часовом поясе, в котором большинство ваших пользователей приходят и/или в локальный часовой пояс, обнаруженный с помощью JavaScript.
- Просто используйте UTC (GMT) на своем веб-сайте.
Очевидно, что это зависит от вашего сайта, какой вариант подходит. На сайте, таком как stackoverflow option 2, используется и имеет наибольший смысл, поскольку существуют различные события, которые основаны на днях, поэтому дни должны меняться одновременно для всех пользователей.
Ну, я делаю сценарий, в котором пользователю нужно знать, что произошло вчера. Итак, ваш первый вариант - лучший, в моем случае. Спасибо, я отвечу на ваш ответ как ответ :) – SuperSpy
Одним из способов было бы использовать что-то вроде IP to City database from MaxMind - это может дать вам часовой пояс для IP-адреса для пользователей.
В качестве альтернативы просто спросите пользователя, какой часовой пояс они предпочитают, и запомните его в переменной cookie или сессии.
Это слишком ненадежно ... – SuperSpy
Не уверен, почему надежность должна быть проблемой для используемого вами варианта использования. Вы можете порадовать пользователя, угадывая их часовой пояс в 99% случаев, а для остальных - позволяйте им настраивать его. –
Несмотря на то, что мне никогда не приходилось его использовать, есть некоторые функции, позволяющие установить часовой пояс и другие функции даты, чтобы рассказать вам о разнице между настройкой текущего часового пояса и GMT. Они могут вам помочь.
Единственное, что должен остановить вас от использования JavaScript, если а) вы просто обслуживая API и не имеют никакого контроля над содержанием страницы; или b) клиент заблокировал javascript в любом случае. Через javascript самый надежный метод, за исключением простого запроса пользователю ввести свой часовой пояс.
Cookies или ajax будут работать. Для более легкого печенья образом, поставить этот JavaScript в вашем головном разделе на любой странице, чтобы добавить печенье ...
<script>
d = new Date;
gmtoffset = d.getTimezoneOffset()/60;
document.cookie = 'gmtoffset=' + gmtoffset;
</script>
Тогда в вашем PHP скриптах, читайте $_COOKIE['gmtoffset']
, чтобы получить их часовой пояс по Гринвичу.
IMHO, время клиента w/часовой пояс должно быть отраслевым стандартным заголовком запроса.
Edit: удален «истекает» даты, например печенье, поскольку это может вызвать проблемы после 1 января 2012 года
Я использовал ваш код в другой части моего скрипта. Благодаря! – SuperSpy
@SuperSpy: Np. Просто не забудьте указать дату истечения срока действия в cookie - время текущего клиента + несколько дней всегда лучше или оставить его, поэтому cookie истекает в конце сеанса просмотра клиента. –
- 1. PHP Даты по местному времени
- 2. Дата/время по местному времени
- 3. Время сервера по местному времени
- 4. Тайваньский формат времени по местному времени
- 5. Android - Изменение времени UTC по местному времени
- 6. С CET времени по местному времени
- 7. пользователей для просмотра по местному времени
- 8. Преобразование PHP эхом дате клиенту по местному времени
- 9. Получите зрителей по местному времени с помощью PHP?
- 10. BigQuery Преобразование UTC Время по местному времени
- 11. Установите время сервера по местному времени
- 12. Конвертировать UTC/GMT по местному времени
- 13. UTC за несколько секунд по местному времени
- 14. UTC по местному времени - неверный результат swift
- 15. Конвертировать UTC время по местному времени
- 16. Json utc время по местному времени
- 17. Вычислить производную по местному времени для серии
- 18. Агрегирование по местному времени в mongodb
- 19. Выбрать товары по местному времени ~ 8AM
- 20. SQL Server UTC по местному времени
- 21. Как применить strftime по местному времени
- 22. Мой сценарий для доставки писем по местному времени каждого пользователя
- 23. Преобразование сохраненного времени UTC в Oracle 10g по местному времени
- 24. sqldf: изменение метки времени от GMT/UTC по местному времени
- 25. Преобразование времени по местному времени в Objective-C
- 26. Угловой таймер - время от времени по местному времени?
- 27. Получите отметку времени начала дня (по местному времени)
- 28. Преобразование времени (UTC), заданного как строка по местному времени
- 29. . Время перелета по UTC по местному времени в PostgreSQL. 8.3
- 30. Невозможно десериализовать DateTime по местному времени с помощью JsonSerializer
Java-скрипт или нет, вы не можете доверять данным, поступающим с клиентской стороны. – Mikk