Comment obtenir l'ID de fuseau horaire (ex.: Heure standard du Centre) de la machine cliente dans asp.net mvc?obtenir le fuseau horaire de la machine cliente dans asp.net mvc
Répondre
Il faudra le faire du côté Javascript, et renvoyer cette valeur dans un champ caché au serveur. Regardez dans le Date.getTimezoneOffset().
Cette information n'est pas envoyée au serveur, il n'y a donc pas de manière triviale de le faire. Une option consisterait à rechercher l'adresse IP dans une base de données de géolocalisation. http://www.ip2location.com/ en est un.
Vous pouvez également effectuer une publication ajax à l'aide du fichier javascript Date.getTimezoneOffset().
$.get('/User/SetTimeZone' + Date.getTimezoneOffset());
et de le stocker dans la session ou avec les données utilisateur.
Si vous avez des problèmes montrant le temps sur le côté client, vous pouvez faire la suivante j'ai écrit une extension à la classe DateTime qui fait la conversion pour moi
public static MvcHtmlString ToClientTime(this DateTime dateTime){
var builder = new TagBuilder("span");
builder.MergeAttribute("data-utc-time",dateTime.ToString());
builder.SetInnerText(string.Format("{0} (UTC)", dateTime.ToString()));
return new MvcHtmlString(builder.ToString());
}
j'ai ajouté un fichier javascript et laissez momentjs gérer la conversion du côté client
$(document).ready(function() {
$("[data-utc-time]").text(function() {
var utcTime = $(this).attr("data-utc-time");
return moment.utc(utcTime, 'DD.MM.YYYY HH:mm').local().format('DD.MM.YYYY HH:mm');
});