Как найти часовой пояс клиентского компьютера с помощью ASP.NET

#javascript #asp.net #timezone

#javascript #asp.net #Часовой пояс

Вопрос:

Мне нужно найти часовой пояс клиентского компьютера с помощью ASP.NET (C #) или JavaScript. Какие различные часовые пояса доступны по всему миру и как преобразовать дату и время на основе часового пояса пользователя.

Пожалуйста, предоставьте несколько предложений или примеров кодирования для изменения времени в зависимости от часового пояса.

Ответ №1:

Вы не можете найти настройки часового пояса клиента с ASP.NET .

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

В Chrome вы можете получить часовой пояс из объекта даты JavaScript. Из того, что я нашел, для этого нет конкретной функции, но код

 (new Date()).toString()
  

даст что-то вроде

 Mon Apr 18 2011 08:58:59 GMT 0200 (W. Europe Daylight Time)
  

На веб-сайтах лучшим подходом, который я нашел, было иметь настройку для каждого пользователя, чтобы указать часовой пояс для отображения всего времени. Если JavaScript getUtcOffset выдает смещение, отличное от ожидаемого для часового пояса пользователя, я покажу уведомление для пользователя, чтобы просмотреть свои настройки. Если часовой пояс можно угадать по дате (что, как я обнаружил, имеет место только в Chrome), я предложу этот часовой пояс, но я все равно прибегаю к окну выбора для пользователя, чтобы вручную выбрать часовой пояс.

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

Как только у вас есть часовой пояс (вы можете перечислить их все с помощью System.TimeZoneInfo.GetSystemTimeZones() ), вы можете конвертировать даты UTC с помощью System.TimeZoneInfo.ConvertTimeFromUtc и System.TimeZoneInfo.ConverTimeToUtc , соответственно.