• 技术文章 >后端开发 >php教程

    php实现实时倒计时功能的方法详解

    墨辰丷墨辰丷2018-05-25 11:55:42原创1317
    这篇文章主要介绍了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))%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>

    以上就是本文的全部内容,希望对大家的学习有所帮助。


    相关推荐:

    jQuery实现倒计时及短信倒计时功能的实现代码

    js通过Date对象实现倒计时动画效果实例分享

    jQuery实现发送短信倒计时功能

    以上就是php实现实时倒计时功能的方法详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 倒计时 实时
    上一篇:php查找字符串中第一个非0的位置截取详解 下一篇:php实现自定义截取中文字符串-utf8版
    大前端线上培训班

    相关文章推荐

    • PHP数据库学习之怎样使用PDO执行SQL语句?• PHP数据库学习之怎样使用PDO连接数据库?• PHP表单学习之表单的输入与验证• PHP数据库学习之怎样使用PDO获取查询结果?• PHP中怎样去连接MySQL数据库?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网