Comment rendre l'heure locale donnée valeurs datetime UTC dans ASP.Net sans utiliser Javascript?

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

  •  23-08-2019
  •  | 
  •  

Question

Est-il possible d'afficher l'heure locale aux utilisateurs sans utiliser Javascript lorsque vous stockez les valeurs UTC?

Était-ce utile?

La solution

Vous avez besoin Serverside de connaître le fuseau horaire des clients. Il n'y a pas assez d'information dans la demande typique de prendre cette décision, le plus proche, vous pouvez obtenir est l'en-tête de Accept_Language qui pourrait vous donner un indice, mais est à peine assez (en particulier. Si le client est dans un pays qui a de multiples fuseaux horaires) utiles .

D'où vous devrez user de vous dire ce que leur fuseau horaire est, puis utiliser une ouverture de session ou un cookie pour stocker cette information.

Autres conseils

Vous pouvez faire la conversion sur le Serverside dans vb.net, C # ou tout autre langage .net votre usage. Vous allez devoir convertir en quelque part, heure locale.

Votre poser une question très large avec aucun détail, je ne peux pas recommander comment faire cela sur le serveur.

Modifier

Sur la base des commentaires que je vois le problème que vous ayez est que vous voulez savoir ce que le fuseau horaire des utilisateurs est sans javascript. J'ai toujours l'utilisateur me dire leur fuseau horaire lors de leur inscription.

Une approche qui ne sera pas parfait serait serait d'être utiliser un service de recherche géo-IP qui vous dira le plus probable où votre utilisateur et donner à votre meilleure granularité puis en utilisant les paramètres de langue.

Pense que c'est le plus proche que vous pouvez faire:

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top