Cómo hacer que el tiempo determinado los valores de fecha y hora UTC locales en ASP.Net sin usar Javascript?

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

  •  23-08-2019
  •  | 
  •  

Pregunta

¿Es posible visualizar los tiempos locales a los usuarios sin necesidad de utilizar Javascript cuando vaya a guardar los valores como UTC?

¿Fue útil?

Solución

Usted tendría que serverside estar al tanto de la zona horaria clientes. No hay suficiente información en la solicitud típica para hacer esa determinación, el más cercano que puedes conseguir es la cabecera Accept_Language que podría dar una pista, pero es lo suficientemente poco útil (esp., Si el cliente se encuentra en un país que tiene múltiples zonas horarias) .

De ahí que se necesita para el usuario que le diga cuál es su zona horaria es y luego usar un inicio de sesión o cookie para almacenar esa información.

Otros consejos

Se puede hacer la conversión en la serverside en vb.net, C # o cualquier lenguaje .NET su uso. Usted va a tener que convertir a la hora local en alguna parte.

Su haciendo una pregunta muy amplia con ningún detalle, así que no puedo recomendar cómo hacer esto en el servidor.

Editar

en base a los comentarios que veo que el problema es el que tiene que desea averiguar qué usuarios de zona horaria es sin javascript. Siempre tengo el usuario dime su zona horaria cuando se registran.

Uno de los enfoques que no será perfecta sería que ser utilizar un servicio de búsqueda de geo-ip que le dirá más probable cuando su usuario y darle a su mejor granularidad a continuación, utilizando la configuración de idioma.

Creo que esto es lo más cerca que puede hacer:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top