#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
, соответственно.