2009-05-20 2 views
3

У меня есть приложение ASP.NET, которое размещено в часовом поясе A и используется пользователями в часовом поясе B. Есть ли способ установить часовой пояс всего веб-приложения на B, хотя хостинг среда находится в A? Я уже установил тег глобализации в web.config с соответствующими значениями uiCulture и культуры, и они отлично работают для дней недели и других параметров локализации, к сожалению, они не корректировали часы:/Что самое легкое, что я могу сделать для выполните настройку, поэтому, когда в приложении я использую DataTime.Now, я получаю текущее время во временной зоне B, а не A. Thx.Приложение ASP.NET и местный часовой пояс

ответ

3

Предполагая, что у вас есть разрешение на внесение изменений: Установите часовой пояс машины, чтобы быть B, было бы моим предложением предположить, что все пользователи приложения используют один и тот же часовой пояс.

В противном случае: Храните смещение для часового пояса B от Utc и используйте эту комбинацию, хотя это может столкнуться с проблемами, связанными с летним временем.

+1

К сожалению, я не могу изменить часовой пояс всего сервера. Единственное, что я хочу изменить, это часовой пояс для одного веб-сайта в IIS. Идеально сделать настройку в web.config ... точно так же, как информация о культуре/локализации. –

+1

Нет, ближе всего вы могли бы сохранить смещение в файле web.config, а затем расширить класс DateTime, чтобы использовать это смещение, чтобы «MyDateTime.Now» находился в нужном часовом поясе. –

+1

К сожалению, это тоже не работает, из-за летнего времени, которое происходит в разное время для Европы и США:/Я вижу, что мне нужно сохранить смещение GMT, а затем настроить каждую операцию в конкретный часовой пояс. Спасибо за ваши ответы, я надеялся, что могут быть еще несколько автоматических решений. –

3

Получите отклики часового пояса клиента от UTC в минутах через JavaScript Date.getTimezoneOffset() вызовите и передайте это обратно серверу через скрытое поле ввода.

Использование сервера DateTime.UTCNow для получения времени сервера в UTC.

Serverside использует DateTime.SpecifyKind для преобразования между локальным временем сервера и UTC по мере необходимости.

+0

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

0

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

Тогда в моем коде я использовал это как смещение.

Согласен, что это ужасный способ программирования, а не простой или эффективный, но для меня это единственный способ.

Смежные вопросы