Как я могу отобразить время сервера относительно текущего часового пояса конечных пользователей? - PullRequest
0 голосов
/ 12 сентября 2011

В настоящее время у меня много операций на моем веб-сайте, куда я захожу:

if (auction.StartTime.Value <= DateTime.Now)

Затем в _Layout.cshtml моего веб-приложения я отображаю время сервера, используя:

<p id="time">@DateTime.Now.ToString("HH:mm")</p>

Это правильно показывает мне текущее время сервера, но я бы хотел отобразить это время в зависимости от того, где он находится. Конечно, я мог бы сделать что-то вроде:

<p id="time">@DateTime.Now.ToGMT(-4).ToString("HH:mm")</p>

Но это кошмар обслуживания. Я должен был бы установить этот метод расширения GMT везде. Может быть, что-то готовится в .NET Framework?

Как бы вы порекомендовали мне справиться с этим?

Ответы [ 4 ]

1 голос
/ 12 сентября 2011

Наиболее важной частью этого является определение часового пояса пользователя.В зависимости от сайта это может быть жестко задано (например, если оно предназначено только для одного часового пояса) или частью настроек пользователя после того, как они вошли в систему.* TimeZoneInfo.ConvertTimeFromUtc может помочь с фактическим преобразованием даты и времени.

1 голос
/ 12 сентября 2011

Используйте этот вопрос StackOverflow для способов отправки информации о часовом поясе из браузера пользователя на ваш сервер (информация о часовом поясе, к сожалению, не является частью трафика браузера).

0 голосов
/ 13 сентября 2011

Самый простой способ - отправить неотформатированное значение (формат инвариантной культуры) в UTC, заново создать объекты даты на стороне клиента (то есть с JavaScript), а затем использовать Глобализация для правильного форматирования даты ивремя в соответствии с местными правилами культуры (и часовой пояс, но этот часовой пояс будет изменен автоматически).

Сложнее будет требовать сохранения информации о часовом поясе в профиле пользователя (или в файле cookie) и заставлять пользователя выбирать действительный часовой пояс впервое место.Или, в качестве альтернативы, считайте смещение часового пояса на стороне клиента (функция getTimezoneOffset () объекта JavaScript) и отправьте его на сервер (например, с помощью Ajax-запроса) один раз за сеанс.Но это ненадежно (разные часовые пояса могут иметь одинаковое смещение , теперь , но переключаться на летнее время в разные даты).

0 голосов
/ 12 сентября 2011

Вы можете встроить текущее время браузера в скрытое поле (используя функцию GetDate () javascript) при первом запросе, а затем получить его на сервере.

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