Могу ли я получить часовой пояс браузера в ASP.NET или мне нужно полагаться на операции JS для извлечения информации?

Могу ли я получить часовой пояс браузера в ASP.NET или мне нужно полагаться на операции JS для извлечения информации

Нет заголовка «Accept-Timezone» (или тому подобного) – стандарт HTTP не содержит каких-либо средств, позволяющих браузеру автоматически сообщать серверу о том, в какой часовом поясе пользователь обращает внимание.

Основной подход – использовать дату и прочитать информацию TZ от нее.

Поскольку нет стандартных (функции именования часовых поясов в кросс-браузере), вам нужно прибегнуть к чему-то вроде (yikes!):

function getTimezoneName() { tmSummer = new Date(Date.UTC(2005, 6, 30, 0, 0, 0, 0)); so = -1 * tmSummer.getTimezoneOffset(); tmWinter = new Date(Date.UTC(2005, 12, 30, 0, 0, 0, 0)); wo = -1 * tmWinter.getTimezoneOffset(); if (-660 == so && -660 == wo) return 'Pacific/Midway'; if (-600 == so && -600 == wo) return 'Pacific/Tahiti'; if (-570 == so && -570 == wo) return 'Pacific/Marquesas'; if (-540 == so && -600 == wo) return 'America/Adak'; if (-540 == so && -540 == wo) return 'Pacific/Gambier'; if (-480 == so && -540 == wo) return 'US/Alaska'; if (-480 == so && -480 == wo) return 'Pacific/Pitcairn'; if (-420 == so && -480 == wo) return 'US/Pacific'; if (-420 == so && -420 == wo) return 'US/Arizona'; if (-360 == so && -420 == wo) return 'US/Mountain'; if (-360 == so && -360 == wo) return 'America/Guatemala'; if (-360 == so && -300 == wo) return 'Pacific/Easter'; if (-300 == so && -360 == wo) return 'US/Central'; if (-300 == so && -300 == wo) return 'America/Bogota'; if (-240 == so && -300 == wo) return 'US/Eastern'; if (-240 == so && -240 == wo) return 'America/Caracas'; if (-240 == so && -180 == wo) return 'America/Santiago'; if (-180 == so && -240 == wo) return 'Canada/Atlantic'; if (-180 == so && -180 == wo) return 'America/Montevideo'; if (-180 == so && -120 == wo) return 'America/Sao_Paulo'; if (-150 == so && -210 == wo) return 'America/St_Johns'; if (-120 == so && -180 == wo) return 'America/Godthab'; if (-120 == so && -120 == wo) return 'America/Noronha'; if (-60 == so && -60 == wo) return 'Atlantic/Cape_Verde'; if (0 == so && -60 == wo) return 'Atlantic/Azores'; if (0 == so && 0 == wo) return 'Africa/Casablanca'; if (60 == so && 0 == wo) return 'Europe/London'; if (60 == so && 60 == wo) return 'Africa/Algiers'; if (60 == so && 120 == wo) return 'Africa/Windhoek'; if (120 == so && 60 == wo) return 'Europe/Amsterdam'; if (120 == so && 120 == wo) return 'Africa/Harare'; if (180 == so && 120 == wo) return 'Europe/Athens'; if (180 == so && 180 == wo) return 'Africa/Nairobi'; if (240 == so && 180 == wo) return 'Europe/Moscow'; if (240 == so && 240 == wo) return 'Asia/Dubai'; if (270 == so && 210 == wo) return 'Asia/Tehran'; if (270 == so && 270 == wo) return 'Asia/Kabul'; if (300 == so && 240 == wo) return 'Asia/Baku'; if (300 == so && 300 == wo) return 'Asia/Karachi'; if (330 == so && 330 == wo) return 'Asia/Calcutta'; if (345 == so && 345 == wo) return 'Asia/Katmandu'; if (360 == so && 300 == wo) return 'Asia/Yekaterinburg'; if (360 == so && 360 == wo) return 'Asia/Colombo'; if (390 == so && 390 == wo) return 'Asia/Rangoon'; if (420 == so && 360 == wo) return 'Asia/Almaty'; if (420 == so && 420 == wo) return 'Asia/Bangkok'; if (480 == so && 420 == wo) return 'Asia/Krasnoyarsk'; if (480 == so && 480 == wo) return 'Australia/Perth'; if (540 == so && 480 == wo) return 'Asia/Irkutsk'; if (540 == so && 540 == wo) return 'Asia/Tokyo'; if (570 == so && 570 == wo) return 'Australia/Darwin'; if (570 == so && 630 == wo) return 'Australia/Adelaide'; if (600 == so && 540 == wo) return 'Asia/Yakutsk'; if (600 == so && 600 == wo) return 'Australia/Brisbane'; if (600 == so && 660 == wo) return 'Australia/Sydney'; if (630 == so && 660 == wo) return 'Australia/Lord_Howe'; if (660 == so && 600 == wo) return 'Asia/Vladivostok'; if (660 == so && 660 == wo) return 'Pacific/Guadalcanal'; if (690 == so && 690 == wo) return 'Pacific/Norfolk'; if (720 == so && 660 == wo) return 'Asia/Magadan'; if (720 == so && 720 == wo) return 'Pacific/Fiji'; if (720 == so && 780 == wo) return 'Pacific/Auckland'; if (765 == so && 825 == wo) return 'Pacific/Chatham'; if (780 == so && 780 == wo) return 'Pacific/Enderbury' if (840 == so && 840 == wo) return 'Pacific/Kiritimati'; return 'US/Pacific'; } 

Вам нужно полагаться на javascript. Вот библиотека для этого – detect_timezone.js

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

Вы можете с помощью JavaScript получить смещение текущего часового пояса с UTC, используя Date#getTimezoneOffset . Однако это не однозначно идентифицирует часовой пояс, поскольку существует множество зон, которые могут использовать одно и то же UTC-смещение, а также множество регионов, которые переключают тайм-точки на DST.

Иногда вы можете получить строку, представляющую короткое имя часового пояса, вызывая Date#toLocaleString . Нет никакой гарантии, что будет имя используемого часового пояса, а имена часовых поясов не являются глобально уникальными, а иногда и браузером (особенно о DST). Но часто есть что- то , и если вы можете связать эту аббревиатуру со смещением, которое вы уже прочитали, и сравнить это с кратким списком известных правил часового пояса, это дает вам хорошее предположение. Вы также можете указать географический IP-таргетинг и использование на стороне сервера заголовка Accept-Language чтобы помочь лучше понять.

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

Вы не можете получить часовой пояс без выполнения каких-либо действий на клиенте (например, JavaScript), поскольку ASP.NET является серверной.

  • Изменение часового пояса MySQL?
  • Как элегантно работать с часовыми поясами
  • Игнорирование часовых поясов в Rails и PostgreSQL
  • Получение даты с на несколько часов
  • Как изменить часовой пояс mysql в java-соединении
  • Как конвертировать datetime в timestamp с помощью C # /. NET (игнорируя текущий часовой пояс)
  • Преобразование дат UTC в другие часовые пояса
  • Преобразование между локальными временами и GMT / UTC в C / C ++
  • Как обрабатывать календарные часовые пояса с помощью Java?
  • Как получить текущий часовой пояс MySQL?
  • Временные зоны MySQL
  • Interesting Posts

    Как отменить определенное слово в регулярном выражении?

    Поиск всех комбинаций хорошо сформированных скобок

    Сохранение пользовательских атрибутов в NSAttributedString

    Как передать переменную, содержащую слэши, для sed

    Как разбирать в Angular.js

    Изображение пользователя android share from url

    Сортировка сжатых (заблокированных) контейнеров в C ++ с использованием boost или STL

    Почему это происходит? Самый эффективный способ получения нескольких объектов с помощью первичного ключа?

    Неизменяемый массив в Java

    Как ссылаться на ресурс изображений JSF как URL-адрес фонового изображения CSS

    Как заставить Apache следовать символическим ссылкам?

    Я не могу получить второй маршрутизатор для расширения сети по сетевым адаптерам

    Статический вложенный class в Java, почему?

    Как вы отлаживаете React Native?

    Как создать загрузочный раздел восстановления для восстановления раздела Windows 7, как сейчас

    Давайте будем гением компьютера.