Como tornar hora local dado os valores de data e hora UTC em ASP.Net sem usar Javascript?
Pergunta
É possível exibir horas locais para os usuários sem o uso de Javascript quando você armazena os valores como UTC?
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();