我想获取用户本地系统的日期和时间。
如何在ASP.NET MVC的控制器中实现它?
答案 0 :(得分:7)
我认为您需要通过JavaScript捕获它,然后将其发送回服务器(例如,使用AJAX)。
在JavaScript中:var d = new Date()
将捕获您需要的内容。
答案 1 :(得分:5)
这是我的解决方案:
注意:需要jQuery。
在_Layout文件的头部(或所有_Layout文件,如果有多个),在jQuery声明之后,放入:
@if (Session["UTCOffset"] == null)
{
<script type="text/javascript">
$.post('/Home/SetUTC', { UTC: new Date().getTimezoneOffset() }, function (data) { location.reload(); });
</script>
}
在Home控制器(或您使用的任何控制器)中,输入:
public JsonResult SetUTC(int UTC)
{
Session["UTCOffset"] = (-1*UTC).ToString();
return Json(null);
}
打印日期时间时,请使用(在此示例中为DateTime.Now):
(DateTime.Now).ToUniversalTime().AddMinutes(double.Parse((string)Session["UTCOffset"]??"-300.00")).ToString("MM-dd-yyyy")
-300是中心时间(我的时区)。如果他们点击的第一页上有任何日期,它们将在中央时间显示。大约一秒钟。然后页面将被重新加载,事情应该按预期工作。
我确信这可能会以某种方式适应非MVC设置,但我会将其留给其他人。
答案 2 :(得分:1)
无法在服务器端asp.net mvc 代码中执行此操作。
您使用所有时区的DtropDown列表提示用户并让他从列表中选择,第二个选项是在client-javascript中捕获本地系统时间并将其发送到服务器通过AJAX请求或回复。
实际上还有一种方法 - 您可以捕获用户计算机的IP并找出该IP所属的国家/地区并选择该国家/地区的TimeZone。您可以使用MaxMind GeoIP数据库,它可以帮助您轻松完成此任务。