我正在使用一個函數(在網上找到它)來計算已經過去的時間。我傳遞兩個參數:發佈日期和當前日期。它會返回年,月,日,時,分或秒。它使用PHP 5.3的日期差異函數,它不會做版本5.2 :(PHP 5.3日期差異相當於PHP <= 5.2對自己的功能
function pluralize($zaehler, $inhalt) {
return trim($zaehler . (($zaehler == 1) ? (" $inhalt") : (" ${inhalt}s"))." ago");}function ago($datetime, $datetime_post){
$interval = date_create($datetime_post)->diff(date_create($datetime));
if ($interval->y >= 1) return pluralize($interval->y, 'year');
if ($interval->m >= 1) return pluralize($interval->m, 'month');
if ($interval->d >= 1) return pluralize($interval->d, 'day');
if ($interval->h >= 1) return pluralize($interval->h, 'hour');
if ($interval->i >= 1) return pluralize($interval->i, 'minute');
if ($interval->s >= 1) return pluralize($interval->s, 'second');}
例如:
$post_date_time = "01/01/2012 11:30:22";
$current_date_time = "02/02/2012 07:35:41";
echo ago($current_date_time, $post_date_time);
將輸出:
1 month
現在我需要一個相當於函數「之前」,這將做同樣的事情,這取決於$ interval對象。
非常感謝你
附加信息: 沒有提供的解決方案實際上做了我一直在尋找的東西。我必須改進我的解釋,對不起。 最後,我必須有這個只有$間隔對象:
object(DateInterval)#3 (8) { ["y"]=> int(0) ["m"]=> int(1) ["d"]=> int(0) ["h"]=> int(20) ["i"]=> int(5) ["s"]=> int(19) ["invert"]=> int(0) ["days"]=> int(6015) }
的沒有必要改變這麼多東西。
難道你不能使用http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php? – ale 2012-02-21 07:34:39
另外,如果你不知道,你可以使用PHP的'date(...)'函數獲取當前日期時間:http://php.net/manual/en/function.date.php – ale 2012-02-21 07:36:45
這是非常容易得到兩個日期的差異,以秒爲單位。將秒轉換爲小時,分鐘和日期是微不足道的。轉換爲數月和數年......如果您假定每個月的長度爲30天,並且每年有12個30天的月份,那麼這很容易。這個解決方案可以接 – 2012-02-21 07:41:03