javascript - 与服务器时间匹配的 Javascript 和 PHP 时钟
问题描述
我有一个显示实时数字时钟的 JS 代码,可以更正来自服务器的分钟/秒,因此如果其中一个客户端或多或少有几分钟,它会更正它们以匹配服务器时间。
<script>
var serverTime = <?php echo (int) round(microtime(true) * 1000) ?>;
var localTime = +Date.now();
var timeDiff = serverTime - localTime;
$(document).ready(function() {
clockUpdate();
setInterval(clockUpdate, 1000);
});
function clockUpdate() {
var t = +Date.now() + timeDiff
var date = new Date(t);
$('.digital-clock').css({'color': '#fff', 'text-shadow': '0 0 0px #ff0'});
function addZero(x) {
if (x < 10) {
return x = '0' + x;
} else {
return x;
}
}
function twelveHour(x) {
if (x > 12) {
return x = x - 12;
} else if (x == 0) {
return x = 12;
} else {
return x;
}
}
var h = addZero(twelveHour(date.getHours()));
var m = addZero(date.getMinutes());
var s = addZero(date.getSeconds());
$('.digital-clock').text(h + ':' + m + ':' + s)
}
</script>
现在脚本按预期工作,但我意识到当其中一个客户端设置为不同的时区时,时钟将与客户端上的小时匹配,
如果现在服务器上是 14:52 而客户端上是 15:52,它将显示 15:52 而我想要相反,我希望所有客户端上显示的所有时钟都与服务器上的确切时间匹配(14: 52)。
请帮我修改这段代码中的东西,不需要其他在线示例。
/*****************/
感谢所有认真对待并试图提供帮助的人(不像那些准备在我问它的同一秒投票结束问题的人)
我想进一步解释一下:
服务器位于法国,使用 GMT+1 和 DST
客户在突尼斯,同一时区 GMT+1,但 DST 不适用。但出于某种原因,突尼斯的许多客户可能不知道使用 DST。
这就是为什么页面上的时间必须与服务器和其他任何地方的时间完全相同的原因。
因此,我使用 PHPdate_default_timezone_set('Africa/Tunis');
将服务器时间设置为突尼斯时区。
谢谢!
解决方案
好的,感谢所有试图提供帮助的人,我通过 Reinhard Schnetzinger 的回答解决了这个问题:
getUTCHours();
getUTCMinutes();
getUTCSeconds();
所以我使用的代码是:
var h = addZero(twelveHour(date.getUTCHours() + 1));
var m = addZero(date.getUTCMinutes());
var s = addZero(date.getUTCSeconds());
使用getUTCHours() + 1
所需时间为 GMT+1
推荐阅读
- vue.js - 如何显示嵌套的json值?
- java - java中字符串的二叉树
- spring - 无法导入 org.springframework.web.multipart.MultipartFile;
- python - 使用 numpy 将图像转换为灰度
- mongodb - mongodb根据某些条件在数组中添加值
- sql - PostgreSQL:从 jsonb[] 中删除对象
- python - 从字符串中提取整数(作为 int 而不是列表)
- sql-server - 单个临时表上的并发更新
- opencv - OpenCV 的 `getTextSize` 和 `putText` 返回错误的大小并用较低的像素截断字母
- oracle - 如何添加两个输出或查询并为以下查询获得一个合并结果