这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 php 实时倒计时功能实现方法, 结合具体实例形式分析了 php 结合前台 JS 的时间戳操作实现倒计时功能的具体步骤与相关操作技巧, 需要的朋友可以参考下
本文实例讲述了 php 实时倒计时功能实现方法。分享给大家供大家参考,具体如下:
这几天公司要做一个限时购物的功能. 这就要做到倒计时, 要有实时的倒计时.
要求:
1) 要有小时分钟秒的实时倒计时的显示
2) 用户端修改日期时间不会影响到倒计时的正常显示 (也就是以服务器时间为准)
其实这和很多的考试等系统的时间限制功能同样的要求.
解决思路:
1) 总不能用 ajax 每秒都获取服务器时间吧.
所以实时倒计时一定要用 javascript 实现. 这很简单. 网上一大把的例子.
2) 现在问题是解决用户端修改日期时间对我们的显示的影响.
解决的办法是计算出用户端的时间和服务器的时间差. 这样问题的完成解决了.
这样只需要运行一次 php. 实时倒计时的时间就和服务器的时间同步了.
理论是同步的, 但实际测试会有 1 秒的误差.(具体原因就是和网速有关, 网速越快, 误差就越小), 但这决不会影响到我们上面的要求了.
实例:
代码:
- <?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:
修改了上面的一些 bug
代码:
- <?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的时间是以秒算。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))$;
- 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>
希望本文所述对大家 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0810/340447.html