Você pode determinar o fuso horário de variables ​​de solicitação?

Existe uma maneira de fazer seus deslocamentos de fuso horário no lado do servidor, lendo algo na solicitação sobre http, em vez de enviar tudo para o cliente e deixá-lo lidar com isso?

    Isso é mais complicado, mas tive que recorrer a esse cenário antes, porque as configurações de perfil de usuário e máquina às vezes não correspondem às preferências do visitante. Por exemplo, um visitante do Reino Unido acessando seu site temporariamente de um servidor australiano.

    1. Use um serviço de geolocalização (por exemplo, MaxMind.com), como sugerido por @balabaster, para obter a zona correspondente ao seu IP (Global.Session_Start é o melhor). Essa é uma boa combinação para ISPs locais, mas não tão boa para a AOL. Armazene o deslocamento disso em um cookie de session.

    2. Ou use JavaScript para obter o deslocamento de fuso horário como parte de um envio / redirecionamento de formulário quando o usuário entrar no site. Este é o deslocamento atual do navegador, mas não necessariamente a zona preferida do visitante. Use este valor como padrão; armazenar em outro cookie de session.

       
    3. Permitir que o visitante atualize a zona por meio de um cookie persistente (para usuários anônimos) e um campo no perfil da conta (se autenticado).

    O valor persistente nº 3 de substitui os valores da session. Você também pode armazenar o mesmo cookie persistente para usuários autenticados para exibir os horários antes de fazer o login.

    Verificar detect_timezone.js – faz um bom trabalho determinando o fuso horário do usuário

    Em qualquer um dos events anteriores ao Page Unload … Request.ServerVariables. Se você quiser o fuso horário físico, verifique o endereço IP e use um IP para a ferramenta de conversão Geo-Location.

    Não tenho certeza se há outra maneira de fazer isso, então se você precisar do fuso horário para o qual o computador está configurado, ele terá que esperar o carregamento da página para um javascript …

    Existe uma maneira de fazer seus deslocamentos de fuso horário no lado do servidor, lendo algo na solicitação sobre http, em vez de enviar tudo para o cliente e deixá-lo lidar com isso?

    Aqui está a solução que surgiu quando tive o mesmo problema com os serviços da Web do WCF:

    Como obter um serviço da Web WCF para retornar DateTimes no fuso horário local do usuário

    Basicamente, recebo meu código JavaScript / Angular para determinar o fuso horário do usuário e, em seguida, passo esse valor para um dos meus serviços da Web do WCF.

    Observe como eu tenho um serviço da web chamado getListOfRecords que recebe um parâmetro, o valor de deslocamento do fuso horário.

     $scope.loadSomeDatabaseRecords = function () { var d = new Date() var timezoneOffset = d.getTimezoneOffset(); return $http({ url: 'http://localhost:15021/Service1.svc/getListOfRecords/' + timezoneOffset, method: 'GET', async: true, cache: false, headers: { 'Accept': 'application/json', 'Pragma': 'no-cache' } }).success(function (data) { $scope.listScheduleLog = data.Results; }); } 

    A partir daí, meu código C # lê os registros do database, aplica esse deslocamento de fuso horário aos valores UTC DateTime e os retorna ao cliente.

    Podemos obter o fuso horário usando o código abaixo no lado do servidor em vez de enviar valor do cliente.

     private TimeZoneInfo GetRequestTimeZone() { TimeZoneInfo timeZoneInfo = null; DateTimeOffset localDateOffset; try { localDateOffset = new DateTimeOffset(Request.RequestContext.HttpContext.Timestamp, Request.RequestContext.HttpContext.Timestamp - Request.RequestContext.HttpContext.Timestamp.ToUniversalTime()); timeZoneInfo = (from x in TimeZoneInfo.GetSystemTimeZones() where x.BaseUtcOffset == localDateOffset.Offset select x).FirstOrDefault(); } catch (Exception) { } return timeZoneInfo; } 

    Obrigado…