gpt4 book ai didi

javascript - 客户端和服务器时间之间的差异

转载 作者:搜寻专家 更新时间:2023-10-31 21:04:21 25 4
gpt4 key购买 nike

我想在 php/javascript 应用程序中使用服务器时间。精确到秒的时间对于应用程序来说非常重要。然而,尽管检查了客户端和服务器时间之间的时间差异,但似乎存在长达 3-4 秒的差异。

我的 Angular 代码如下;

 // Pre ajax time (so we can see how long it took to get data from server)
var timeElapsed = new Date().getTime();

$http.get('/getServerTime.php')
.success(function (data) {
// Calculate the length of the ajax request in seconds
timeElapsed = new Date().getTime() - timeElapsed;

// Add that to the returned server time to get the current
// server time. (data.date is provided by the getServerTime.php page)
$scope.serverTime = data.date + timeElapsed;
$scope.timeDifference = new Date().getTime() - $scope.serverTime;
});

理论上这应该可行,但会出现最多四秒的差异。

如有任何建议或代码修改,我们将不胜感激。

最佳答案

混合客户端和服务器时间根本不是一个好主意。客户端时间根本不可靠,因为用户可以随时随地更改他的时间。如果他觉得好笑,他现在可以把时间定在 06.06.2066。那你的程序会做什么?可能没什么好东西。不要混淆这些,最好的方法可能是只使用服务器时间除了你只需要两个时间点的差异来评估持续时间。在这种情况下,您可以使用客户端时间,因为对于不同的时间戳,绝对值无关紧要(2016 年或 2066 年,谁在乎...3 秒是 3 秒)

此外,您的代码中还有另一个问题。如果您想通过添加从服务器返回的值加上自您的 ajax 调用以来耗时来“计算当前服务器时间”——您错过了您的请求到达服务器所需的延迟。

假设您在 0 毫秒发送您的请求 - 服务器将在 20 毫秒收到请求并将它的当前服务器时间放入响应中。那么您的客户将在 50 毫秒内获得结果。则计算出的服务器时间与实际服务器时间相差 20 毫秒。

最后,您尝试做的事情似乎是一种非常不公平的非最佳实践方法。

也许如果您告诉我们您希望通过这种方法实现什么,我们可以帮助您找到更好的解决方案

关于javascript - 客户端和服务器时间之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35178722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com