用JavaScript或php怎么写一个倒计时时钟啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JavaScript或php怎么写一个倒计时时钟啊相关的知识,希望对你有一定的参考价值。

参考技术A 这个是javascript
距离北京奥运会开幕还有
<br>
<html>
<head>
<title>倒计时测试</title>
<!--倒计时设置代码-->
<script language="JavaScript">
<!-- hide script from old browser
var DifferenceHour = -1
var DifferenceMinute = -1
var DifferenceSecond = -1
var Tday = new Date("Aug 8, 2008 20:00:00") //**倒计时时间点-注意格式
var daysms = 24 * 60 * 60 * 1000
var hoursms = 60 * 60 * 1000
var Secondms = 60 * 1000
var microsecond = 1000
function clock()

var time = new Date()
var hour = time.getHours()
var minute = time.getMinutes()
var second = time.getSeconds()
var timevalue = ""+((hour > 12) ? hour-12:hour)
timevalue +=((minute < 10) ? ":0":":")+minute
timevalue +=((second < 10) ? ":0":":")+second
timevalue +=((hour >12 ) ? " PM":" AM")
// document.formnow.now.value = timevalue
var convertHour = DifferenceHour
var convertMinute = DifferenceMinute
var convertSecond = DifferenceSecond
var Diffms = Tday.getTime() - time.getTime()
DifferenceHour = Math.floor(Diffms / daysms)
Diffms -= DifferenceHour * daysms
DifferenceMinute = Math.floor(Diffms / hoursms)
Diffms -= DifferenceMinute * hoursms
DifferenceSecond = Math.floor(Diffms / Secondms)
Diffms -= DifferenceSecond * Secondms
var dSecs = Math.floor(Diffms / microsecond)
if(convertHour != DifferenceHour) document.formnow.dd.value=DifferenceHour
if(convertMinute != DifferenceMinute) document.formnow.hh.value=DifferenceMinute
if(convertSecond != DifferenceSecond) document.formnow.mm.value=DifferenceSecond
document.formnow.ss.value=dSecs
// document.formnow.Tnow.value= DifferenceHour DifferenceMinute + DifferenceSecond + dSecs
setTimeout("clock()",1000)

// end hiding -->
</script>
</head>
<!--BODY里面的ONLOAD注意-->
<body onload="clock();return true" text="red">
<!--实现显示-->
<form name="formnow">
<input name="dd" type="text" style="border:0;" size=2>

<input name="hh" type="text" style="border:0;" size=2>
小时
<input name="mm" type="text" style="border:0;" size=2>

<input name="ss" type="text" style="border:0;" size=2>

</form>
<!--倒计时完毕-->
这个是php
<?php
/**************************************
**功能:PHP实时倒计时
**创建日期:2009-2-26
**作者:潘继强 <panjeck@tom.com>
**
***************************************/
//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实时倒计时
**创建日期: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>
另外,楼下的那个冷笑天只是一个秒表,不知道楼主要的是秒表还是倒计时,要是还有什么其他需要或者代码看不懂的,m我
呵呵呵本回答被提问者采纳
参考技术B <!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>无标题文档</title>
</head>

<body>
<span id="clock" >00:01:11:00</span>
<input id="startB" type="button" value="start countdown!" onclick="run()">
<input id="endB" type="button" value="stop countdown!" onclick="stop()">
<br>
<input id="diff" type="text">
<input id="next" type="text">
<script language="Javascript">

var normalelapse = 100;
var nextelapse = normalelapse;
var counter;
var startTime;
var start = clock.innerText;
var finish = "00:00:00:00";
var timer = null;
// 开始运行
function run()
startB.disabled = true;
endB.disabled = false;
counter = 0;
// 初始化开始时间
startTime = new Date().valueOf();
// nextelapse是定时时间, 初始时为100毫秒
// 注意setInterval函数: 时间逝去nextelapse(毫秒)后, onTimer才开始执行
timer = window.setInterval("onTimer()", nextelapse);

// 停止运行
function stop()
startB.disabled = false;
endB.disabled = true;
window.clearTimeout(timer);

window.onload = function()
endB.disabled = true;

// 倒计时函数
function onTimer()

if (start == finish)

window.clearInterval(timer);
alert("time is up!");
return;

var hms = new String(start).split(":");
var ms = new Number(hms[3]);
var s = new Number(hms[2]);
var m = new Number(hms[1]);
var h = new Number(hms[0]);

ms -= 10;
if (ms < 0)

ms = 90;
s -= 1;
if (s < 0)

s = 59;
m -= 1;


if (m < 0)

m = 59;
h -= 1;


var ms = ms < 10 ? ("0" + ms) : ms;
var ss = s < 10 ? ("0" + s) : s;
var sm = m < 10 ? ("0" + m) : m;
var sh = h < 10 ? ("0" + h) : h;
start = sh + ":" + sm + ":" + ss + ":" + ms;
clock.innerText = start;
// 清除上一次的定时器
window.clearInterval(timer);
// 自校验系统时间得到时间差, 并由此得到下次所启动的新定时器的时间nextelapse
counter++;
var counterSecs = counter * 100;
var elapseSecs = new Date().valueOf() - startTime;
var diffSecs = counterSecs - elapseSecs;
nextelapse = normalelapse + diffSecs;
diff.value = counterSecs + "-" + elapseSecs + "=" + diffSecs;
next.value = "nextelapse = " + nextelapse;
if (nextelapse < 0) nextelapse = 0;
// 启动新的定时器
timer = window.setInterval("onTimer()", nextelapse);

</script>

</body>
</html>

Systick时钟

   我们在写单片机程序时,最常用的一个函数就是延时函数,很多情况下,都需要我们产生一个延时,如果此时,程序对延时的精确程度较高,显然一般的延时函数并不能满足我们的需求,那我们该怎么办呢?这个时候,Systick定时器就是它发挥作用的时候了。

   什么是Systick定时器呢?简而言之,它是stm32内部系统滴答定时器,并且它是24位倒计时定时器,作用就是能够产生精确的延时时间。当计数到0时,它自动从一个叫做RELOD寄存器中自动加载数值。众所周知,我们想要驱动定时器,需要一个时钟才能驱动,而Systick定时器的时钟比较特殊,它的时钟来源是系统时钟。Systick有两种获得系统时钟的方式,一种是直接取自系统时钟,另一种是将系统时钟8分频,然后再赋值给Systick定时器。

   Systick定时器是属于CM3内核的外设,所有基于CM3内核的单片机都具有这个系统定时器。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。

   这里先来讲讲Systick最基础的用法---精确产生一个延时。这里,就让它延时1秒钟吧。Systick还是比较简单的,因为它只有四个寄存器。如下:

寄存器名称                             寄存器描述
CTRL                                    Systick控制及状态寄存器
LOAD                                    Systick重装载数值寄存器
VAL                                     Systick当前数值寄存器
CALIB                                   Systick校准数值寄存器

我们通过systick产生精确的延时,首先,我们要设置重装载数值。因为,当定时的时间为0时,RELOAD中的数值自动赋值给systick。那么,设置重装载数值,也就是定时时间为,这里延时ms为单位,

SysTick->LOAD = 9000 * i;   //72MHz进行8分频,于是是9MHz,所以9 * 10^6 Hz * 1 * 10^-6 s

接着,我们要使能systick,

SysTick->CTRL = 0x01;      //若为0x00,则关闭定时器

之后,我们要对定时器清零,

SysTick->VAL = 0;

完整代码如下:

void delay_ms ( unsigned int i ){

    unsigned int temp;
    
    SysTick->LOAD = 9000 * i;   //如果是微妙,则 SysTick->LOAd = 9 * i;
    SysTick->CTRL = 0x01;
    SysTick->VAL = 0;
    
    do{
    
        temp = SysTick->CTRL;    //读取当前倒计数值
    
    }while ( ( temp & 0x01 ) && ( !( temp & ( 1 << 16 ) ) ) );
    
    SysTick->CTRL = 0x00;     //关闭计数器
    SysTick->VAL = 0;         //计数器清零

}


本文出自 “梵高说我脑子有病” 博客,请务必保留此出处http://chen0547.blog.51cto.com/12489941/1970776

以上是关于用JavaScript或php怎么写一个倒计时时钟啊的主要内容,如果未能解决你的问题,请参考以下文章

用 JavaScript 构建倒计时时钟

初学JavaScript之利用计时器做出的简单时钟

laravel框架中倒计时怎么写

易语言怎么写倒计时关闭计算机系统? 比如,按钮1.被点击了,我要它在60秒后关闭计算机系统,该怎么

js怎么写一个时钟?每秒跳一次的那种

求php倒计时代码