比较服务器时间和浏览器时间

时间:2015-05-26 20:59:33

标签: javascript c# .net kendo-ui kendo-asp.net-mvc

我的表格有3列:FileNameLastUpdateTime和重启按钮。

仅当上次更新时间超过20分钟时才需要显示重启按钮。我从服务器获取最后一次更新时间。 d = new Date()给出本地浏览器时间,但lastUpdateTime来自服务器。服务器位于与客户端浏览器不同的时区。

如果服务器和浏览器位于同一时区,则以下代码有效。如果服务器和浏览器位于不同的时区,您对如何解决这个问题有任何建议吗?

此应用程序应该在美国和欧洲的任何地方运行。

var lastUpdatedTime = (gridData[i].LastTimeUpdated);
var d = new Date();
//deducting 20 min from current time
var deductTwenty = d.setMinutes(d.getMinutes() - 20); 
var parsedupdatetime = Date.parse(lastUpdatedTime);                          

// If the last update time is not 20 ago, hide it. 
if (parsedupdatetime > deductTwenty) {
    newrestartButton.hide();
}

3 个答案:

答案 0 :(得分:0)

可能出现的问题是服务器日期解析。看看Date.parse function spec - 并确保您的服务器返回的内容将像ISO8601格式的日期一样正确解析。

答案 1 :(得分:0)

在.cshtml文件中使用.NET获取日期服务器端。假设你使用MVC(因为你标记了这个问题kendo-asp.net-mvc)。

@{
    var deductTwenty = DateTime.Now.AddMinutes(-20);
}

<script>
    var jsDeductTwenty = new Date(@deductTwenty.Year, @deductTwenty.Month-1, @deductTwenty.Day, @deductTwenty.Hour, @deductTwenty.Minute);
</script>

结果:

JS Time

答案 2 :(得分:0)

您必须使用客户端时区转换ImageButton imgbtn = new ImageButton(); imgbtn.Height = 25; imgbtn.CssClass = "light"; imgbtn.ID = "led"; imgbtn.OnClientClick = "Turnon('" + "www.google.com" + "');"; form1.Controls.Add(imgbtn); // ,这意味着您应该在用20分钟减去日期时将服务器时间转换为客户端时间。您可以使用momentjsmoment-timezonejstimezonedetect来实现此目标。

您的代码应该是这样的

lastUpdatedTime

希望得到这个帮助。