Como tornar hora local dado os valores de data e hora UTC em ASP.Net sem usar Javascript?

StackOverflow https://stackoverflow.com/questions/893689

  •  23-08-2019
  •  | 
  •  

Pergunta

É possível exibir horas locais para os usuários sem o uso de Javascript quando você armazena os valores como UTC?

Foi útil?

Solução

Você precisaria serverside estar ciente de fuso horário clientes. Não há informações suficientes no pedido típico para fazer essa determinação, o mais próximo que você pode obter é o cabeçalho Accept_Language que pode lhe dar uma pista, mas é quase o suficiente útil (esp. Se o cliente está em um país que tem vários fusos horários) .

Por isso você precisaria usuário para dizer-lhe que o seu fuso horário é e, em seguida, utilizar um início de sessão ou um cookie para armazenar essa informação.

Outras dicas

Você poderia fazer a conversão no serverside em vb.net, c # ou qualquer linguagem .net sua utilização. Você vai ter que converter para a algum lugar, hora local.

Seu pedindo uma ampla questão com nenhum detalhe para que eu não posso recomendar como fazer isso no servidor.

Editar

Com base nos comentários que eu vejo o problema seu ter é que você quer descobrir o que o fuso horário usuários é sem javascript. Eu sempre tenho o usuário diga-me o seu fuso horário quando se registam.

Uma abordagem que não será perfeito seria iria ser usar um serviço de pesquisa geo-ip que irá dizer-lhe mais provável onde o usuário e dar a sua granularidade melhor em seguida, usando as configurações de idioma.

Pense este é o mais próximo que você pode fazer:

using System.Globalization;

// get the first language from request (en, fr, ru)
var primaryLanguage = Request.UserLanguages.First().Split(";").First();
// find a culture by this language
var culture = new CultureInfo(primaryLanguage);
// if the culture is neutral, try to find the specific one
if (culture.IsNeutralCulture)
    culture = CultureInfo.GetCultures(CultureTypes.SpecificCultures).FirstOrDefault(o => o.TwoLetterISOLanguageName == primaryLanguage);
// get the string from a datetime
var datetimeText = culture ? DateTime.Now.ToString(culture) : DateTime.Now.ToString();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top