天天看點

PHP中比較兩個時間的大小與日期的內插補點

在這裡我們全用到時間戳

mktime(hour,minute,second,month,day,year,[is_dst])

     其參數可以從右向左省略,任何省略的參數都會被設定成本地日期和時間的目前值。

參數 描述

 hour 可選。規定小時。

 minute 可選。規定分鐘。

 second 可選。規定秒。

 month 可選。規定用數字表示的月。

 day 可選。規定天。

 year 可選。規定年。在某些系統上,合法值介于 1901 – 2038 之間。不過在 php教程 5 中已經不存在這個限制了。

 is_dst 可選。如果時間在日光節約時間(dst)期間,則設定為1,否則設定為0,若未知,則設定為-1。自 5.1.0 起,is_dst 參數被廢棄。是以應該使用新的時區處理特性

 在日常生活中我們要經常比較時間的早晚,對于我們來說判斷時間的大小很簡單。但是時間的比較不隻是單純的數字大小的比較,是以相對來說還是比較複雜。那麼在php中通過什麼方式來比較兩個時間的大小呢?

    要比較兩個時間的大小,我們需要将時間轉化為時間戳格式,然後再進行比較這是最常用的方法。常用到的函數是:strtotime()

     文法格式:strtotime(time,now)

     如果time是絕對時間,則now參數不起作用

     如果time是相對時間,則相對應的參數則對應函數就是now來提供,如果沒有提供now參數,那麼相對應的時間就是目前的本地時間。

執行個體:比較兩個絕對時間的大小

 代碼:

<?php

 $zero1=date(“y-m-d h:i:s”);

 $zero2=”2010-11-29 21:07:00′;

 echo “zero1的時間為:”.$zero1.”<br>”;

 echo “zero2的時間為:”.$zero2.”<br>”;

 if(strtotime($zero1)<strtotime($zero2)){

  echo “zero1早于zero2′;

 }else{

  echo “zero2早于zero1′;

 }

 ?>

 輸出結果:

 zero1的時間為:2010-11-30 21:12:55

 zero2的時間為:2010-11-29 21:07:00

 zero2早于zero1

注:可以根據執行個體發散思維

    計算兩個日期的內插補點

     奧運會倒計時,亞運會倒計時,生日倒計時這些倒計時都可以通過計算兩個日期的內插補點來實作,同樣需要用到strottime()函數。

     實作倒計時需要将兩個時間的內插補點整數化,需要用到函數ceil()

     ceil()函數的作用是求不小于給定實數的最小整數

執行個體:倒計時小程式

 執行個體代碼:

 $zero1=strtotime (date(“y-m-d h:i:s”)); //目前時間

 $zero2=strtotime (“2011-2-03 24:00:00′);  //過年時間

 $guonian=ceil(($zero2-$zero1)/86400); //60s*60min*24h

 echo “離過年還有<strong>$guonian</strong>天!”;

 離過年還有66天!

strtotime()函數解析

定義和用法

 strtotime() 函數将任何英文文本的日期時間描述解析為 unix 時間戳。

文法

 strtotime(time,now)參數 描述

 time 規定要解析的時間字元串。

 now 用來計算傳回值的時間戳。如果省略該參數,則使用目前時間。

說明

 該函數預期接受一個包含美國英語日期格式的字元串并嘗試将其解析為 unix 時間戳(自 january 1 1970 00:00:00 gmt 起的秒數),其值相對于 now 參數給出的時間,如果沒有提供此參數,則用系統目前時間

如何聯系我:【萬裡虎】www.bravetiger.cn

【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)

【部落格】http://www.cnblogs.com/kenshinobiy/