即使客户端时间错误,也能从客户端获取正确的纪元时间
Get correct epoch time from client even if time on client is wrong
我正在构建一个需要来自客户端的纪元时间的实时网络应用程序。计算涉及来自我的服务器的时间戳和来自客户端的时间戳。我使用以下代码使用 JS 从客户端获取纪元时间戳:
var milliseconds = Math.floor((new Date).getTime()/1000);
JS 是基于客户端的,因此检索到的值基于客户端拥有的 date/time。所以有可能是客户端date/time配置错误导致获取的epoch时间错误
有没有办法确保来自客户端的纪元时间是正确的?或者如果错了有没有办法改正?
当然,我可以使用 AJAX 从服务器获取纪元时间,但由于我在倒计时函数中使用了那个时间,这意味着我必须每秒访问服务器..
[我没有在每个循环中向当前时间添加一秒的原因是因为我在移动设备休眠时遇到问题。当移动设备唤醒时,它会从关闭时的位置开始倒计时。它不会考虑当前时间增加。 ]
如有任何建议,我们将不胜感激!
var getClientMillis = function() {
return Date.now();
}
var realStartTime = getServerMillis();
var clientStartTime = getClientMillis();
var getCurrentMillis = function() {
return realStartTime + (getClientMillis() - clientStartTime);
}
您需要自己实施 getServerMillis()
。
我正在构建一个需要来自客户端的纪元时间的实时网络应用程序。计算涉及来自我的服务器的时间戳和来自客户端的时间戳。我使用以下代码使用 JS 从客户端获取纪元时间戳:
var milliseconds = Math.floor((new Date).getTime()/1000);
JS 是基于客户端的,因此检索到的值基于客户端拥有的 date/time。所以有可能是客户端date/time配置错误导致获取的epoch时间错误
有没有办法确保来自客户端的纪元时间是正确的?或者如果错了有没有办法改正?
当然,我可以使用 AJAX 从服务器获取纪元时间,但由于我在倒计时函数中使用了那个时间,这意味着我必须每秒访问服务器..
[我没有在每个循环中向当前时间添加一秒的原因是因为我在移动设备休眠时遇到问题。当移动设备唤醒时,它会从关闭时的位置开始倒计时。它不会考虑当前时间增加。 ]
如有任何建议,我们将不胜感激!
var getClientMillis = function() {
return Date.now();
}
var realStartTime = getServerMillis();
var clientStartTime = getClientMillis();
var getCurrentMillis = function() {
return realStartTime + (getClientMillis() - clientStartTime);
}
您需要自己实施 getServerMillis()
。