如何在asp.net mvc中获取用户的本地系统日期时间?

时间:2010-09-16 06:43:09

标签: asp.net-mvc

我想获取用户本地系统的日期和时间。

如何在ASP.NET MVC的控制器中实现它?

3 个答案:

答案 0 :(得分:7)

我认为您需要通过JavaScript捕获它,然后将其发送回服务器(例如,使用AJAX)。

在JavaScript中:var d = new Date()将捕获您需要的内容。

http://www.w3schools.com/js/js_obj_date.asp

答案 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数据库,它可以帮助您轻松完成此任务。