幾乎所有從事程序開發的程序員都遇到時間處理問題,PHP開發也一樣,幸運的是PHP提供了很多關於日期時間函數。只要經常使用這些函數,搭配使用,日期時間處理上就熟能生巧了。
今天要講的這個例子,需求是這樣的。得知某個日期時間,
如:2012-04-25 10:10:00
我要在這個日期時間的基礎上加上5個月並返回處理後的日期
結果:2012-04-25 10:10:00 加5個月等於 2012-09-25 10:10:00
這個需求看似簡單,但還是有點棘手,因為PHP沒有直接提供yyyy-mm-dd hh:ii:ss 這樣格式的日期時間進行加減,所以只能通過時間戳來實現。時間戳是程序換算的標准格式,精確到秒。PHP可以將多種日期格式轉換為時間戳,又可以把時間戳轉換回各種日期格式,結合這兩個特點我們大致實現的步驟有三步,先把原來時間轉換成時間戳,然後進行加減,最後轉換回日期格式。
當然,這是實現原理,結合PHP函數date()與strtotime()兩個函數來實現大致也是這個意思,請看實例代碼
復制代碼 代碼如下:
<?php
/**
* PHP裡的日期加減方法
* 瓊台老屋
*/
// 第一步,假設有一個時間
$a = '2012-04-25 10:10:00';
// 第二步,獲得這個日期的時間戳
$a_time = strtotime($a);
// 第三步,獲得加五個月後的時間戳
$b_time = strtotime('+5 Month',$a_time);
// 第四部,把時間戳轉換回日期格式
$b = date('Y-m-d H:i:s',$b_time);
echo '這是加了五個月後的日期'.$b;
// 如果你覺得以上代碼過長也可以一行搞定
$b = date('Y-m-d H:i:s',strtotime('+'.$time.' Month',strtotime($a)));
echo '這是加了五個月後的日期'.$b;
?>
關於date()函數與strtotime()函數的使用,這裡就不詳細介紹了。需要的童鞋可以看我以前的相關函數介紹文章或者到php.net去看手冊均可。
不要將php想的這麼笨,當前時間用time(),按你的需求來個最直接的辦法。
$time=time();
for($i=1;$i<=5;$i++){
$s=getdate($time-$i*24*3600);
$day[$i][mdy]=$s[mday];
$day[$i][mon]=$s[mon];
}
這樣你就得到過去5天的月和日了,將-換成+就是未來5天的月和日。
不過,我發現你是不太了解時間戳的定義。
未來五天,就是time()+5*24*3600,
過去五天,就是time()-5*24*3600,
為什麼不能用時間戳?
建議使用javascript語言編寫代碼,用PHP完成這個比較麻煩。
具體的倒計時代碼你可以網上搜索下,類似的代碼有很多。