2009-10-15 4 views

Répondre

6

Il faudra le faire du côté Javascript, et renvoyer cette valeur dans un champ caché au serveur. Regardez dans le Date.getTimezoneOffset().

2

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.

1

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'); 
});