《PHP应用:php实时倒计时功能实现方法详解》要点:
本文介绍了PHP应用:php实时倒计时功能实现方法详解,希望对您有用。如果有疑问,可以联系我们。
本文实例讲述了php实时倒计时功能实现方法.分享给大家供大家参考,具体如下:PHP实例
这几天公司要做一个限时购物的功能.这就要做到倒计时,要有实时的倒计时.PHP实例
要求:PHP实例
1) 要有小时分钟秒的实时倒计时的显示
2)用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准)PHP实例
其实这和很多的考试等系统的时间限制功能同样的要求.PHP实例
解决思路:PHP实例
1)总不能用ajax每秒都获取服务器时间吧.PHP实例
所以实时倒计时一定要用javascript实现.这很简单.网上一大把的例子.PHP实例
2)现在问题是解决用户端修改日期时间对我们的显示的影响.
解决的办法是计算出用户端的时间和服务器的时间差.这样问题的完成解决了.PHP实例
这样只需要运行一次php.实时倒计时的时间就和服务器的时间同步了.PHP实例
理论是同步的,但实际测试会有1秒的误差.(具体原因就是和网速有关,网速越快,误差就越小),但这决不会影响到我们上面的要求了.PHP实例
实例:PHP实例
代码:PHP实例
- <?php
- //php的时间是以秒算.js的时间以毫秒算
- date_default_timezone_set("Asia/Hong_Kong");//地区
- //配置每天的活动时间段
- $starttimestr = "09:00:00";
- $endtimestr = "18:30:00";
- $starttime = strtotime($starttimestr);
- $endtime = strtotime($endtimestr);
- $nowtime = time();
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>PHP实时倒计时!</title>
- <script language="JavaScript">
- <!-- //
- var EndTime=<?=$endtime*1000?>;
- var NowTime = new Date();
- //计算出服务器和客户端的时间差.
- var dTime = <?=$nowtime*1000?>-NowTime.getTime();
- function GetRTime(){
- var NowTime = new Date();
- var nMS = EndTime - NowTime.getTime()-dTime;
- var nH=Math.floor(nMS/(1000*60*60)) % 24;
- var nM=Math.floor(nMS/(1000*60)) % 60;
- var nS=Math.floor(nMS/1000) % 60;
- document.getElementById("RemainH").innerHTML=nH;
- document.getElementById("RemainM").innerHTML=nM;
- document.getElementById("RemainS").innerHTML=nS;
- if(nMS>5*59*1000&&nMS<=5*60*1000)
- {
- alert("还有最后五分钟!");
- }
- setTimeout("GetRTime()",1000);
- }
- window.onload=GetRTime;
- // -->
- </script>
- </head>
- <body>
- <h1><strong id="RemainH">XX</strong>:<strong id="RemainM">XX</strong>:<strong id="RemainS">XX</strong></h1>
- </body>
- </html>
实例2:PHP实例
修改了上面的一些bugPHP实例
代码:PHP实例
- <?php
- //php的时间是以秒算.js的时间以毫秒算
- date_default_timezone_set("Asia/Hong_Kong");//地区
- //配置每天的活动时间段
- $starttimestr = "09:00:00";
- $endtimestr = "18:30:00";
- $starttime = strtotime($starttimestr);
- $endtime = strtotime($endtimestr);
- $nowtime = time();
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>PHP实时倒计时!</title>
- <script language="JavaScript">
- <!-- //
- var EndTime=<?=$endtime*1000?>;
- var NowTime = new Date();
- //计算出服务器和客户端的时间差.
- var dTime = NowTime.getTime()-<?=$nowtime*1000?>;
- var runtimes = 0;
- function GetRTime(){
- var NowTime = new Date();
- var dTimeNew = NowTime.getTime()-<?=$nowtime*1000?>;
- var dTimesM = Math.abs(Math.floor((dTimeNew-runtimes*1000-dTime)/1000));//客户端时间和服务器当前时间的差
- if (dTimesM>1) {//如果用户修改了客户端时间,就重新load本页
- window.location.reload();
- }
- var nMS = EndTime - NowTime.getTime()+dTime;
- var nH=Math.floor(nMS/(1000*60*60)) % 24;
- var nM=Math.floor(nMS/(1000*60)) % 60;
- var nS=Math.floor(nMS/1000) % 60;
- document.getElementById("RemainH").innerHTML=nH;
- document.getElementById("RemainM").innerHTML=nM;
- document.getElementById("RemainS").innerHTML=nS;
- if(nMS>5*59*1000&&nMS<=5*60*1000)
- {
- alert("还有最后五分钟!");
- }
- runtimes++;
- setTimeout("GetRTime()",1000);
- }
- window.onload=GetRTime;
- // -->
- </script>
- </head>
- <body>
- <h1><strong id="RemainH">XX</strong>:<strong id="RemainM">XX</strong>:<strong id="RemainS">XX</strong></h1>
- </body>
- </html>
实例3:PHP实例
思路不同,简单多了.PHP实例
代码:PHP实例
- <?php
- //php的时间是以秒算.js的时间以毫秒算
- date_default_timezone_set("Asia/Hong_Kong");//地区
- //配置每天的活动时间段
- $starttimestr = "09:00:00";
- $endtimestr = "13:50:00";
- $starttime = strtotime($starttimestr);
- $endtime = strtotime($endtimestr);
- $nowtime = time();
- if ($nowtime<$starttime){
- die("活动还没开始,活动时间是:{$starttimestr}至{$endtimestr}");
- }
- $lefttime = $endtime-$nowtime; //实际剩下的时间(秒)
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>PHP实时倒计时!</title>
- <script language="JavaScript">
- <!-- //
- var runtimes = 0;
- function GetRTime(){
- var nMS = <?=$lefttime?>*1000-runtimes*1000;
- var nH=Math.floor(nMS/(1000*60*60))%24;
- var nM=Math.floor(nMS/(1000*60)) % 60;
- var nS=Math.floor(nMS/1000) % 60;
- document.getElementById("RemainH").innerHTML=nH;
- document.getElementById("RemainM").innerHTML=nM;
- document.getElementById("RemainS").innerHTML=nS;
- if(nMS>5*59*1000&&nMS<=5*60*1000)
- {
- alert("还有最后五分钟!");
- }
- runtimes++;
- setTimeout("GetRTime()",1000);
- }
- window.onload=GetRTime;
- // -->
- </script>
- </head>
- <body>
- <h1><strong id="RemainH">XX</strong>:<strong id="RemainM">XX</strong>:<strong id="RemainS">XX</strong></h1>
- </body>
- </html>
PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:PHP实例
在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqiPHP实例
在线日期计算器/相差天数计算器:
http://tools.jb51.net/jisuanqi/datecalcPHP实例
在线日期天数差计算器:
http://tools.jb51.net/jisuanqi/onlinedatejsqPHP实例
Unix时间戳(timestamp)转换工具:
http://tools.jb51.net/code/unixtimePHP实例
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php日期与时间用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》PHP实例
希望本文所述对大家PHP程序设计有所帮助.PHP实例
转载请注明本页网址:
http://www.vephp.com/jiaocheng/1549.html