導航:首頁 > 編程語言 > php計算剩餘時間

php計算剩餘時間

發布時間:2025-07-14 05:03:49

『壹』 關於php 時間戳轉換年月日問題。

<?PHP
/*
*==============================
*此方法由mantye提供
*http://my.oschina.net/u/223350
*@date2014-07-22
*==============================
*@description取得兩個時間戳相差的年齡
*@before較小的時間戳
*@after較大的時間戳
*@returnstr返回相差年齡y歲m月d天
**/
$after=1529380306;
$before=time();
functiondatediffage($before,$after){

if($before>$after){
$b=getdate($after);
$a=getdate($before);
}else{
$b=getdate($before);
$a=getdate($after);
}

$n=array(1=>31,2=>28,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31);
$y=$m=$d=0;

if($a['mday']>=$b['mday']){//天相減為正

if($a['mon']>=$b['mon']){//月相減為正
$y=$a['year']-$b['year'];$m=$a['mon']-$b['mon'];
}else{//月相減為負,借年
$y=$a['year']-$b['year']-1;$m=$a['mon']-$b['mon']+12;
}

$d=$a['mday']-$b['mday'];

}else{//天相減為負,借月
if($a['mon']==1){//1月,借年
$y=$a['year']-$b['year']-1;$m=$a['mon']-$b['mon']+12;$d=$a['mday']-$b['mday']+$n[12];
}else{

if($a['mon']==3){//3月,判斷閏年取得2月天數
$d=$a['mday']-$b['mday']+($a['year']%4==0?29:28);
}else{
$d=$a['mday']-$b['mday']+$n[$a['mon']-1];
}


if($a['mon']>=$b['mon']+1){//借月後,月相減為正
$y=$a['year']-$b['year'];$m=$a['mon']-$b['mon']-1;
}else{//借月後,月相減為負,借年
$y=$a['year']-$b['year']-1;$m=$a['mon']-$b['mon']+12-1;
}


}


}

return($y==0?'':$y.'年').($m==0?'':$m.'個月').($d==0?'':$d.'天');

}
echodatediffage($before,$after)
?>

『貳』 PHP函數執行時間過長無響應,有什麼優化的辦法

可以採用MQ,首先將task丟進Q裡面,然後給出用戶提示,前台頁面輪詢後台結果。
如果數據量過大建議分批處理,拆分成多個task即可。

『叄』 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>

閱讀全文

與php計算剩餘時間相關的資料

熱點內容
程序員染發被開除 瀏覽:391
我的世界怎麼命令魔方 瀏覽:50
javascript面向對象編程pdf 瀏覽:879
電腦里所有的文件夾都打不開了 瀏覽:495
android條碼掃描源碼 瀏覽:362
linux反編譯到c 瀏覽:610
oppo手機大文件夾怎麼設置 瀏覽:273
程序員必須寫日報嗎 瀏覽:299
javaint轉換成byte 瀏覽:54
汽車壓縮機不運行 瀏覽:341
linux內核存儲 瀏覽:970
常規加密區長度 瀏覽:171
別克君越顯示屏怎麼裝app 瀏覽:693
命令母親 瀏覽:716
航母pdf 瀏覽:877
即拼商城軟體源碼 瀏覽:207
王羲之小楷pdf 瀏覽:859
手機wifi為什麼連接不上伺服器 瀏覽:187
什麼可以解壓解困 瀏覽:480
程序員關注代碼質量 瀏覽:537