请PHP高手帮修改一个倒计时的代码.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请PHP高手帮修改一个倒计时的代码.相关的知识,希望对你有一定的参考价值。

现在这个代码可以看到秒的跳动,希望高手能帮改一下,添加毫秒的显示,并能看到毫秒的跳动.
h:m:s:ms (毫秒不断跳动,每一毫秒都变一次)
php代码如下:

<?php
/**************************************
**功能:PHP实时倒计时
**创建日期:2009-2-26
**作者:潘继强 <panjeck@tom.com>
**
***************************************/
//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>

现在这个代码可以看到秒的跳动,希望高手能帮改一下,添加毫秒的显示,并能看到毫秒的跳动.
h:m:s:ms (毫秒不断跳动,每一毫秒都变一次)
PHP代码如下:

<?php
/**************************************
**功能:PHP实时倒计时
**创建日期:2009-2-26
**作者:潘继强 <panjeck@tom.com>
**
***************************************/
//php的时间是以秒算。js的时间以毫秒算

date_default_timezone_set("Asia/Hong_Kong");//地区

//配置每天的活动时间段
$starttimestr = "09:00:00";
$endtimestr = "15:00:00";

$starttime = strtotime($starttimestr);
$endtime = strtotime($endtimestr);
$nowtime = time();
if ($nowtime<$starttime)
die("活动还没开始,活动时间是:$starttimestr至$endtimestr");

$lefttime = $endtime-$nowtime; //实际剩下的时间(秒)
//echo floor(microtime()*1000);
?>
<!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=gb2312" />
<title>PHP实时倒计时!</title>
<script language="JavaScript">
<!-- //
var runtimes = 0;
function GetRTime()
var nMS = <?=$lefttime?>*1000-runtimes*10;
var nH=Math.floor(nMS/(1000*60*60))%24;
var nM=Math.floor(nMS/(1000*60)) % 60;
var nS=Math.floor(nMS/1000) % 60;
var nms=Math.floor(nMS);
document.getElementById("RemainH").innerHTML=nH;
document.getElementById("RemainM").innerHTML=nM;
document.getElementById("RemainS").innerHTML=nS;

var c=new Date();
var q=c.getMilliseconds();
if(q<10)//因为毫秒为一位数时只占一个字符位置,会让毫秒二字变动位置

q="00"+c.getMilliseconds();

if(q>=10 && q<100)//因为毫秒为两位数时只占两个字符位置,会让毫秒二字变动位置

q="0"+c.getMilliseconds();

document.getElementById("xxx").innerHTML=q;
if(nMS>5*59*1000&&nMS<=5*60*1000)

alert("还有最后五分钟!");

runtimes++;
setTimeout("GetRTime()",10);

window.onload=GetRTime;
// -->
</script>
</head>
<body>
<h1><strong id="RemainH">XX</strong>:<strong id="RemainM">XX</strong>:<strong id="RemainS">XX</strong>

:<strong id="xxx">XX</strong>

</h1>

</body>
</html>
参考技术A 倒计时需要用php吗 直接都是javascript的代码应该也可以吧

请高手设计一个PHP倒计时代码,感激不尽

【PHP倒计时代码要求如下】:

1、要求获取服务器时间,不受本地时间和时区的影响
2、要求秒钟跳动,数字减少的方式跳动
3、直到当倒计时时间为00:00:00时,代码将自动重新计算,永不间断。

活动开始时间:年——月——日(服务器日期 - 6)
活动结束时间:年——月——日(服务器日期 + 1)
距结束还剩余:天——时——分——钟(服务器时间 + 24)(然后秒钟跳动倒计时)(超过晚上00:00后,代码不刷新,继续到计时。除非遇到剩余时间为0天0时0分0秒后,代码将重新计算。如此循环)

-----------------------------------------------------------------------
【举个例子】:
假如服务器时间是 2014-8-9 08:30:07
那么网页显示为:
活动开始时间:2014年8月3日
活动结束时间:2014年8月10日
距活动结束 还有1天15小时27分20秒 结束(秒钟不停的在减少)
(当剩余时间为0天0时0分0秒后,代码将自动更新)

-----------------------------------------------------------------------
最后,感激不尽。我对php一窍不通,只懂一点简单的html代码,请将完整的PHP代码复制给我,有注释最好,方便我自己修改,谢谢了!
-----------------------------------------------------------------------
如果很麻烦需要牺牲功能的话,可以把【遇到0天0时0分0秒后代码自动更新】这个功能去掉。因为好像也没有人会把一个网页打开24小时不关闭的。

PHP 文件名 ajax_clock.php 内容为
<?php
date_default_timezone_set('Asia/Shanghai');
echo date("Y-m-d",mktime(date("H",time()),date("i",time()),date("s",time()),date("m",time()),date("d",time())-6,date("Y",time()))).'|'.date("Y-m-d",mktime(date("H",time()),date("i",time()),date("s",time()),date("m",time()),date("d",time())+1,date("Y",time())));

html文件名 ajax_clock.html 内容为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
活动开始时间<div id="start"></div>
<br />
活动结束时间<div id="end"></div>
<br />
现在还剩下<div id="expire"></div>
<br />
<input type="button" id="ok" name="ok" value="重新开始" onclick="resetClock()" />
<script type="text/javascript">
var url="ajax_clock.php?sid="+Math.random();
var xmlHttp;
function myClock()
xmlHttp=getXMLObject();
xmlHttp.open('GET',url);
xmlHttp.onreadystatechange=handleStateChange;//这一句最为关键,是ajax异步通讯的关键点
xmlHttp.send();
window.setTimeout(myClock,1000);

function handleStateChange()
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)

$('start').innerHTML=xmlHttp.responseText;



window.setTimeout(myClock,1000);

function getXMLObject()
var xmlHttp;
try
xmlHttp=new ActiveXObject('MSXML2.XMLHTTP.3.0');//IE

catch(e)
try
xmlHttp=new XMLHttpRequest();//firefox

catch(e)
alert('不能正常创建xmlhttp对象');


return xmlHttp;


function $(obj_name)
return document.getElementById(obj_name);

</script>追问

你好,我有二个问题。第1个问题是:这个代码是否没有复制完整呢,我测试的时候只有显示了日期,没有出现时间。第2个问题是这个代码能否放到一个文件里面呢(如果需要牺牲功能的话,我宁愿把0天0时0分0秒后代码将自动更新这个功能去掉也行。因为也没有人会把一个网页打开24小时不关闭的)。谢谢你啦,盼回复!

追答

可以做到一个文件里。是的,我只是写了一个演示代码。您如果要完整,我下课后给您一个

追问

恩好非常谢谢,等我你的代码啦,感激不尽哦!!!

追答

效果图:

完整代码:文件名为 ajax_clock.php

<?php

date_default_timezone_set('Asia/Shanghai');

$now=time();

//开始时间


$start=date("Y-m-d",mktime(date("H",$now),date("i",$now),date("s",$now),date("m",$now),date("d",$now)-6,date("Y",$now)));

//结束时间

$end=date("Y-m-d",mktime(date("H",$now),date("i",$now),date("s",$now),date("m",$now),date("d",$now)+1,date("Y",$now)));

//倒计时时间 

if(isset($_GET['action']) and $_GET['action']=='ajax')

$now=$_GET['now'];

$now=$now+24*60*60;

$time=time();

$span=$now-$time;

//3670/60

$hour=intval($span/60/60);

$minute=intval(($span-$hour*60*60)/60);

$second=($span-$hour*60*60)-$minute*60;


$expire="0天".$hour."小时".$minute."分".$second."秒";

//输出

echo $expire;

exit();

?>

晕,提示字数超出最大允许值,我放在一个文中件。文件名为ajax_clock.php

参考技术A

活动倒计时效果PHP代码如下:

PS:仅供参考

date_default_timezone_set("Asia/Shanghai");

$time1=time();

$time2=mktime(23,0,0,11,20,2017);

$time3=$time2-$time1;

$day=($time3-($time3%(24*3600)))/(24*3600);

$hour=($time3%(24*3600)-(($time3%(24*3600))%3600))/3600;

$minute=((($time3%(24*3600))%3600)-((($time3%(24*3600))%3600)%60))/60;

$second=($time3%(24*3600)%3600)%60;

参考技术B PHP程序是需要触发的,哪怕你写成死循环到达一定时间也会因为超时被强制结束掉的,最好将倒计时用放在其他程序执行,例如:windows 的计划任务,linux的脚本程序,让web浏览器定时刷新等,然后去触发PHP程序处理逻辑部分的功能 参考技术C 武将 关羽、张飞、马超、黄忠、赵云、魏延、关平、周仓、关兴、张苞、陈到、李严、姜维、廖化、马谡、马岱、陈式、雷铜、吴兰、王平、任夔、张翼、马忠、张南、冯习、傅佥孙吴 文臣 陆逊、张昭、张紘、鲁肃、虞翻、顾雍、诸葛谨、诸葛恪、陆凯、骆统、周鲂 参考技术D 这个效果需要在客户端实现。
PHP 实现不了这样的效果。
试试用 JS

以上是关于请PHP高手帮修改一个倒计时的代码.的主要内容,如果未能解决你的问题,请参考以下文章

求php倒计时代码

PHP倒计时代码修改 倒计时时间错误

请传奇脚本高手看看

高分求一段 PHP 实时显示倒计时 代码

[js高手之路] html5 canvas教程 - 制作一个数码倒计时效果

laravel框架中倒计时怎么写