js实时动态显示PHP服务器时间且不用Ajax循环查询获取的方法
更新:2021-02-28 15:01:03
人气:1363
来源:本站原创
A+
有这样的一个需求,在终端一体机中实现实时动态显示时间如“2021年2月28日 14:46:40 星期天”,而且要每秒跳动一次。但是大家都知道,JS显示的本地计算机的时间,而应用中要显示服务器的时间才能保证应用程序的计时准确性。通常想到的办法就是用JS和AJAX定时每秒一次循环与服务器通讯获取实时时间,这样可以实现但无形中增加了频繁通讯的次数,也有可能因为网络或特殊情况造成JS循环脚本的阻塞,一但阻塞,时间可能会每次跳2秒或更多,产生不友好的波动数据。
所以今天分享一则特别简单的方法,就是首次加载页面时获取PHP服务器时间,用time()获取服务器时间戳做为计时的基准时间,然后JS在此时间基础上动态每秒显示时间,再每隔指定S时间(比如30秒或1分钟),重新获取服务时间用于校准,既避免了每秒与服务器通讯,又能减小本地计算机与服务器时间的误差。
//首次获取服务器时间,然后JS在此时间基础上动态显示时间,再每隔指定S时间,重新获取服务时间,既避免了每秒与服务器通讯,又能减小本地计算机与服务器时间的误差。 var datecuo = <?= time() ?>* 1000;//首次用PHP获取服务器的时间做为基础时间 var date_count = 0; function time() { var vWeek, vWeek_s, vDay; vWeek = ["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]; datecuo = datecuo + 1000; date_count++; var date = new Date(datecuo); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); hours = date.getHours(); minutes = date.getMinutes(); seconds = date.getSeconds(); vWeek_s = date.getDay(); if (hours < 10) { hours = '0' + hours; } if (minutes < 10) { minutes = '0' + minutes; } if (seconds < 10) { seconds = '0' + seconds; } $("#nowtime").html(year + "年" + month + "月" + day + "日" + " " + hours + ":" + minutes + ":" + seconds + " " + vWeek[vWeek_s]); //以计数的方式,60次即1分钟,用AJAX从服务器head头信息的date中获取一次时间,进行较准 if (date_count >= 60) { var newdate = new Date($.ajax({ type: "HEAD", async: false }).getResponseHeader('Date')); var newt_shijianchuo = (new Date(newdate)).getTime() / 1000; datecuo= newt_shijianchuo*1000 date_count = 0; } }; setInterval("time()", 1000);
HTML页面:
<div>当前时间:<span id="nowtime">---</span></div>
推荐的文章
随手记
- ● blob:http地址的原理及生成方法
- ● 华视CVR100系统身份证读卡器web驱动安装不识别解决办法
- ● web应用采用webcam实现拍照上传的PHP示例及参数说明
- ● PHP实现直播推流功能
- ● win10开机后屏幕黑屏只有鼠标但能启动任务管理器
- ● base64.js文件下载及使用方法说明
- ● windows利用bat微信双开、多开
- ● 百度API提交推送报{"error":401,"message":"tokenisnotvalid"}什么原因
- ● 如果在调用创建群接口时没有保存OpenConversationId,可以通过调用本接口通过chatId获取OpenConversationId
- ● Windows中使用BAT文件设置指定IP地址或自动获取IP
PHP经验分享
- ● MySQLSUM在没有符合查询条件时返回结果为空的处理办法
- ● 如何开启PHP8的JIT提升运行速度
- ● 钉钉API接口-用PHP+Curl实现获取用户信息
- ● 钉钉API接口-用PHP+Curl实现获取应用Access_Token
- ● 在PHP中使用CURL,“撩”服务器只需几行——phpcurl详细解析和常见大坑
- ● MySQLInnodb并发涉及参数说明
- ● mysql参数调优之innodb_thread_concurrency、innodb_concurrency_tickets合理的使用cpu性能
- ● PHP用fsockopen检测指定IP端口是否开启可用
- ● PHP用socket检测服务器IP端口是否开放?代码示例
- ● GatewayWorker报错:Waring:Events::onMessageisnotcallable