實現從指定時間向下推n個月的函數 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 實現從指定時間向下推n個月的函數 (http://www.webasp.net/article/17/16935.htm) |
| -- 作者:未知 -- 發佈日期: 2005-03-10 |
| 作者: bjbs_270
前一段時間做了一個月報表統計用下了如題的功能,結合別人用mktime()函數我寫了一個可是後來老是出錯,鬱悶極。週末抽出一點時間寫一個來用,但願能對部分村民有用。 PHP代碼:-------------------------------------------------------------------------------- <? /* * 作者:心燈 * 功能:實現從指定時間向下推N個月的函數 * month($ymd,$len) $ymd時間,$len推出幾個月 * $ymd='2005-01-01'; */ function month($ymd='',$len='12'){ $month = array(); $lang = $lang."<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">"; if($ymd){//判斷時間格式是否正確 if(!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$ymd)){ echo "<script>alert('函數參數中的日期格式不對');history.back()</script>"; exit; } } if($len){ if(!ereg("[0-9]+",$len)){ echo $lang."<script>alert('函數中的時間長度中含有非法字段');history.back()</script>"; exit; } } for($i=0;$i<$len;$i++){ if($i==0){ $mktime = $ymd?strtotime($ymd):time(); } $month[] = date("Y-m",$mktime);//可以根據需要來設計置你要的格式 $day = date("t",$mktime); if($i==0) $reday = date("d",$mktime); else $reday = $day; $t1 = $mktime; $mktime=date("Y-m-d",mktime(date("H",$t1),date("i",$t1),date("s",$t1),date("m",$t1),date("d",$t1)-$reday,date("Y",$t1))); $mktime =strtotime($mktime); } return $month; } $month = month(); foreach($month as $key => $v){ echo $v."<br>"; } ?> -------------------------------------------------------------------------------- 效果如下: 2005-01 2004-12 2004-11 2004-10 2004-09 2004-08 2004-07 2004-06 2004-05 2004-04 2004-03 2004-02 |
| webasp.net |