PHP中比較兩個時間的大小與日期的差值

suboysugar發表於2016-06-05

在這裡我們全用到時間戳

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()函式的作用是求不小於給定實數的最小整數

例項:倒數計時小程式
 例項程式碼:
<?php
 $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/


相關文章