Сохранить проблему времени и даты с пользователями - PullRequest
1 голос
/ 29 июня 2011

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

Сохраняю все сообщения в БД.

Теперь проблема возникла из-за того, что сервер, на котором размещен веб-сайт, находится в США, а некоторые пользователи приезжают из разных стран с разными часовыми поясами.

Итак, я отправил сообщение пользователю, и он, например, был в Египте, он увидит, что его сообщение отправлено 6 часов назад, а не сейчас, как он только что отправил:)

Я хочу знать, как веб-сайт, такой как Facebook, Twitter и stackoverflow, решают эту проблему.

Примечания:
- Я не спрашиваю пользователя о его часовом поясе или стране при регистрации.
- Я использую ASP.Net MVC.
- Я использую плагин timeago jquery, чтобы показывать хорошие форматированные даты.

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Если временная метка хранится как Всемирное координированное время (UTC) , то все, что вам нужно, это отформатировать значение из базы данных в соответствии с локальным часовым поясом пользователя.

Например, если предположить, что метка времени из базы данных указана в миллисекундах (например, 1309365893296), то в javascript вы можете сделать следующее, чтобы преобразовать ее в локальный часовой пояс пользователя:

var localtime = new Date(1309365893296);
0 голосов
/ 29 июня 2011

Что вам нужно сделать, это сохранить все ваши метки времени, используя DateTime.UtcNow

Когда вы хотите показать время пользователю, вы можете использовать .ToLocalTime() для своей переменной, чтобы преобразовать его в каждоечасовой пояс пользователя.

0 голосов
/ 29 июня 2011

Полагаю, лучшим способом было бы собирать значение DateTime с ПК вашего пользователя всякий раз, когда они отправляют текст.

Исходя из этого, вы сможете определить, в каком часовом поясе они находятся, на основеразница в количестве часов.

Затем при каждом отображении отметки времени в приложении добавляйте или вычитайте разницу в количестве часов.

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