在asp.net mvc中获取客户端机器时区

时间:2009-10-15 14:52:44

标签: javascript asp.net-mvc timezone client

如何在asp.net mvc中获取客户端计算机的时区ID(例如:中央标准时间)?

3 个答案:

答案 0 :(得分:6)

必须在Javascript端完成,并将该值在隐藏字段中发布回服务器。查看Date.getTimezoneOffset()

答案 1 :(得分:2)

该信息不会发送到服务器,因此没有简单的方法。一种选择是在地理位置数据库中查找IP。 http://www.ip2location.com/就是一个。

你也可以使用javascript Date.getTimezoneOffset()进行ajax回发。

$.get('/User/SetTimeZone' + Date.getTimezoneOffset());

并将其存储在会话中或与用户数据一起存储。

答案 2 :(得分:1)

如果您在客户端显示时间有麻烦,那么您可以执行以下操作 我写了一个DateTime类的扩展,为我做转换

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

然后我添加了一个javascript文件,让momentjs处理客户端的转换

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