Как лучше всего определить и сохранить часовой пояс, в котором находится клиент веб-приложения? - PullRequest
5 голосов
/ 07 октября 2008

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

Однако, когда клиент вводит время или промежуток времени, как лучше всего его обнаружить и сохранить?

В настоящее время я делаю следующее:

  1. Получить значение Date.getTimezoneOffset () (javascript)
  2. Отправьте это в код на стороне сервера через ICallbackEventHandler на странице.
  3. Сохранить это значение в сеансе
  4. При любом последующем запросе вычисляйте значение даты / времени ввода / вывода, используя часовой пояс клиента.

Независимо от фактической реализации, это выглядит как не элегантное решение. У кого-нибудь есть лучший метод?

Ответы [ 2 ]

4 голосов
/ 07 октября 2008

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

Это устраняет путаницу в коде на стороне сервера, так как я всегда знаю, который час (UTC). На стороне клиента я использую jquery и функцию each () для форматирования всех значений времени одновременно. Я записываю каждый раз как unix-время в скрытом поле, чтобы сделать это простым для обработки с помощью jquery.

Единственные проблемы, с которыми я сталкиваюсь в этом методе, это то, что а) у меня пока нет действительно хорошей подпрограммы форматирования даты / времени в javascript, и б) если у пользователя отключен javascript, то он не работает.

2 голосов
/ 07 октября 2008

Вы можете использовать свойство header для объекта HttpRequest для запроса заголовка «If-Modified-Since», отправленного клиентом. Этот заголовок должен содержать дату в формате, который включает часовой пояс клиента, например:

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

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

С уважением, Фабрицио

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