2015-02-26 1 views
1

Я кодирую интернет-приложение MVC 5 и развертываю это приложение в Azure. Все значения DateTime хранятся в формате UTC.Получение местоположения веб-пользователей для преобразования DateTime CultureInfo

Как наилучшим образом отображать эти значения в качестве локального времени для пользователя сети? Я знаю, как конвертировать UTC DateTime в LocalTime, но не уверен, что лучший способ отображать эти значения DateTime для международных пользователей, которые используют сайт Azure.

Я сделал некоторые исследования, и я читал, что можно сделать следующее:

  1. Получить HttpRequest.UserLanguages ​​массив строк в.
  2. Получить свой первый элемент. Первый элемент указывает предпочтительный язык и регион пользователя по умолчанию.
  3. Создайте объект CultureInfo, который представляет предпочтительную культуру пользователя, вызывая конструктор CultureInfo.CultureInfo (String, Boolean).
  4. Преобразование UTC DateTime с использованием объекта CultureInfo.

Есть ли лучший/более простой способ сделать это? Должно ли это быть сделано в каждом контроле/результате действия, или это можно сделать в одном месте? Кто-нибудь написал какой-то код, который я могу использовать, а не писать свой собственный код?

Заранее спасибо.

ответ

1

Добавьте это в веб-конфигурации:

<configuration> 
    <system.web> 
    <globalization culture="auto:en-US" uiCulture="en-US" /> 
    </system.web> 
</configuration> 

Если вы не планируете использовать локализованные ресурсы, то вы можете опустить uiCulture часть конфигурации.

Этот параметр автоматически переключает запрос ASP.NET на язык клиента , если совпадение может быть найдено. Если в браузере нет , укажите язык или язык не может быть сопоставлен с одной из установленных культур .NET , используется запасное значение - в данном случае en-US.

Этот параметр применяет текущий поток потока запросов ASP.NET и UICulture. Культура переключается очень рано в жизненном цикле HttpApplication ASP.NET , поэтому вы видите выбранную культуру и , доступную даже в Application_BeginRequest, а затем всюду по оставшемуся циклу запроса .

The full article about this