отображать дату / время на веб-сайте на основе времени компьютера пользователя в другой стране - PullRequest
1 голос
/ 08 апреля 2011

Я занимаюсь разработкой чата для веб-приложений. Для моей концепции я избегаю использовать часовой пояс.

Когда пользователь публикует сообщение, я использую php, чтобы узнать текущую дату / время моего сервера и сохранить его в базе данных.

Чтобы отобразить время всех сообщений пользователю, мне просто нужно выяснить разницу между временем сервера и системным временем пользователя. Допустим, разница составляет 3 часа, мне просто нужно использовать mysql, чтобы извлечь записанное время сервера из базы данных, а затем добавить его с 3, например: $ message-time-display = $ server-time-of-message-posts + $ Different.

Для этого решения, хотя компьютерное время пользователя может быть неправильным, оно не повлияет на записи времени, сохраненные в моей базе данных. И он покажет правильное время, когда пользователи скорректировали время своего компьютера. Это решение надежно? Если так, то почему никто не делает это? Почему так много людей используют GMT или часовой пояс? Может быть, я пропустил какой-то важный вопрос?

Ответы [ 3 ]

0 голосов
/ 09 апреля 2011

Если вы пишете приложение, которое когда-либо будет только на одном сервере, тогда будет нормально хранить время как время вашего локального сервера.Если ваше приложение будет развернуто во многих точках земного шара, то имеет смысл хранить его все время как UTC .

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

Итак, в вашем случае это должно выглядеть примерно так:

  1. действие пользователя -> сохранить время UTC в базе данных
  2. другое действие пользователя -> сравнить текущее время UTC ссохраненное время UTC и разница отображения.

Если вы отображаете метки времени, оно должно выглядеть следующим образом:

  1. действие пользователя -> сохранить время UTC в базе данных
  2. доступ пользователя -> получить сохраненное время UTC и перевести его в часовой пояс пользователя.Дисплей.
0 голосов
/ 09 апреля 2011

Ваше решение должно работать, пока пользователь правильно настроил время.Это единственная проблема на самом деле.Как вы думаете, почему никто не делает это?Я думаю, что большинство из них делают, и только ленивые полагаются на время GMT / EST.

Подсказка: я видел время пользователя, отправленное в кодах отслеживания, таких как javascript Google Analytics, вероятно, для вычисления разницы, которую вы принимаете;)

0 голосов
/ 09 апреля 2011

Одно быстрое решение - не показывать точное время, а прошедшее.Пример: 2 минуты назад

А потом ...

Поскольку вы знаете, сколько времени прошло, вы можете вычесть это из текущего времени пользователя.Вы можете получить текущее время пользователя с помощью JavaScript.

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...