A. 如何用php做一個循環的倒計時牌
<?php
$StartDate = '06-07'; //開始日期
$OverDate = '06-08'; //結束日期
date_default_timezone_set('Etc/GMT-8'); //設置時區
$time = time();
$datetime = strtotime(date('Y-m-d', $time)); // 取得今天凌晨的時間
$year = date('Y', $time);
$OverTime = strtotime("$year-$OverDate"); // 取得結束的時間
if($OverTime < $datetime){ // 判斷有沒有過了結束日期 如 8 號,若過了,則開始明年的倒計時
$year++;
$OverTime = strtotime("$year-$OverDate");
}
$StartTime = strtotime("$year-$StartDate");
$n = $StartTime - $time; //計算相差的時間(秒)
if($n <= 0){ // 若是負數 則已經開始了
$n = abs($n) + 86400; // 若是要精確到 時 分 秒 則把這行去了
$str = "高考已經開始 第 %d 天"; //格式 輸出
} else {
$str = "距 $year 年高考還有: %d 天 %d 小時 %d 分 %d 秒";
}
//下面的 $day, $hour, $min, $sec 若是已經開始則表示開的已過的時間,否則則是相差的時間
$day = intval($n / 86400);
$hour = intval(($n % 86400) / 3600);
$min = intval(($n %3600) / 60);
$sec = $n % 60;
printf($str, $day, $hour, $min, $sec);
?>
B. php循環倒計時的代碼
這個可能要配合子框架和JS的功能來實現.
思路是:
1. 在主框架頁面上,安排一個表單 + 一個文本框(設變數名為 end_time),用來設置時間(target 指向子框)(日期格式: 2009-05-28 12:00:00 )
2. 再插入一個對象用來顯示剩餘時間(可以是文本框,也可以是<span>標記,還可以是其它可以用JS替換內容的對象就可以了)(假設它的標記是<span id="timeout"></span>).
3. 在主框架上插入一子框架,子框架的源文件指向php文件
4. 在PHP源文件中插入適當代碼.代碼的作用主要分幾部分,
A.計算剩餘時間
B.用於更新主頁面的剩餘時間對象的JS代碼.
C.適當設置頁面刷新的時間(用JS或刷頁刷新代碼)
部分代碼:
1.主框架(index.php)
<form action="timer.php" method="post" name="form1" target="timerframe" id="form1">
<table border="0">
<tr>
<td>開始時間
<label></label></td>
<td><input name="end_time" type="text" id="end_time" value="<?php echo date("Y-m-d H:i:s");?>" /></td>
<td><label>
<input type="submit" name="Submit" value="提交" />
</label></td>
</tr>
</table>
<table width="400" border="0">
<tr>
<td> </td>
</tr>
<tr>
<td>離結束還有:<span class="STYLE1" id="timeout">aaaaa</span></td>
</tr>
</table>
</form>
<iframe name="timerframe" width="1" height="1"></iframe>
2.子框架(timer.php)
<body>
<?php
$endTime=strtotime($_REQUEST['end_time']); //將終止時間轉為nix_timestamp格式
$now=time(); //當前時間
//printf( "N:%s,\n<br>E:%s\n<br>",$now,$endTime);
if($now>=$endTime) //如果時間已過結束時間
{
?>
<script language="javascript">
var f=parent.document.getElementById("form1")
f.end_time.value='<?php echo date("Y-m-d H:i:s",$endTime+2*3600);?>'
f.submit()
</script>
<?php
exit;
}
$timeLeft=$endTime-$now; //計算剩餘的秒數,並轉換為對應的 時:分:秒 的格式
?>
<script language="javascript">
parent.document.getElementById("timeout").innerHTML='<?php echo date("H:i:s",$timeLeft-8*3600);?>'
function refresh()
{
var f=parent.document.getElementById("form1")
f.submit();
}
setTimeout("refresh()",5000)
</script>
</body>