如何在asp.net mvc中获取客户端计算机的时区ID(例如:中央标准时间)?
答案 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');
});