如果我們要在 PHP 裡面計算兩個時間經過了多久,可以透過先透過 new DateTime() 取得時間物件後,再透過 diff 去取得另一個經過的時間物件,像是:

$d1=new DateTime("2012-07-08 11:00:00");
$d2=new DateTime("2021-12-01 11:00:00");
$diff=$d2->diff($d1);

這時取得的 $diff 會大概是長下面這個樣子:

DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 0
    [i] => 0
    [s] => 0
    [f] => 0
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 0
    [days] => 0
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)

 

接著要顯示經過的時間的話,可以再透過 format() 去轉換,比如說:

echo $diff->format("%y years %m monthes %d days");

這樣就可以顯示兩個時間間經過了 n 年  m 月 p 日這樣,用中文也沒有問題。

參考:
The DateInterval class