Como descobrir qual timezone um (ASP.NET / MonoRail) user website está em?

votos
1

Então, eu estou definindo um cookie que devem expirar. No entanto, eu quero isso para trabalhar em todo o mundo. Então eu preciso ajustar a minha data de expiração para fuso horário do usuário.

Então, eu preciso descobrir o fuso horário, do lado do servidor do usuário.

Existe uma maneira de fazer isso no BCL? Como em, algo como contando com a CultureInfo.CurrentUICulture a ser definido correctamente (que eu acredito que o monotrilho LocalizationFilter faz, mas ainda não devidamente verificadas), e, em seguida, descobrir qual o fuso horário do usuário está em (bem como representando o horário de verão lá também) com base em que?

Há System.TimeZoneInfo em .NET 3.5, mas pouca documentação sobre o que os IDs são - se eles são códigos ISO, ou o quê.

Ou eu vou confiar em algo no lado do cliente para empurrar estas informações a partir por exemplo Date.getTimezoneOffset ()? Eu prefiro evitar que , desde, bem, o lado do cliente se encontra.

Publicado 10/12/2008 em 12:43
fonte usuário
Em outras línguas...                            


3 respostas

votos
1

Além de geolocalização IP (uma má idéia por razões mencionado por outros), ou JavaScript (também não é muito bom porque é muito ambígua (devido a fusos horários)), não há nenhuma maneira de obter o fuso horário do usuário.

Sua melhor opção é permitir que o usuário defina-se o fuso horário por algum tipo de painel de controle do usuário. Dessa forma, você sabe exatamente o fuso horário do usuário está em e você permitir que o usuário para confirmar o fuso horário.

Não é suposto ser alguns grandes recursos de geolocalização sendo adicionados em navegadores no futuro, mas que ainda é um longo caminho para usar em produção.

Se você decidir ir com detecção automática usando JavaScript, eu recomendo estes scripts, que digitalizar as datas no sistema do usuário para saber quando DST ocorre e também recebe de volta o deslocamento GMT (mesmo dentro DST).

http://www.attackwork.com/BlogEntry/3/Time-zone-detect-and-ignore-Daylight-Saving-Time-DST/Default.aspx http://www.attackwork.com/BlogEntry/11/Daylight -Saving-Time-DST-Detectar / Default.aspx

Ainda sem uma grande idéia, mas funciona.

Respondeu 12/12/2008 em 04:02
fonte usuário

votos
1

É muito simples. No servidor, colocar um asp: escondido campo e preenchê-lo com data / hora do servidor atual. No cliente, subtrair a data / hora no campo oculto a partir da data atual no cliente (new Date ()) e você tem o seu deslocamento a partir GMT. Reverter para fazê-lo no servidor (por exemplo, new Date () no campo oculto, subtrair hora do servidor de valor de campo oculto).

Respondeu 10/12/2008 em 22:45
fonte usuário

votos
0

Não há nenhuma boa maneira de determinar a clientes de fuso horário. Você pode rastrear seu endereço IP, e em seguida, tentou anexar um local para ele, mas que complicado e propenso a erros (Alguns localizadores colocar todos AOL usa em Virginia)

Eu diria que seria melhor fazê-lo no lado do cliente.

Respondeu 10/12/2008 em 13:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more