2013-01-25 167 views
-1

可能重複:
How to calculate the difference between two dates using PHP?
How to get difference between two dates in Year/Month/Week/Day?計算月,年和天爲時間戳

我試圖給定的兩個日期之間計算年,月和日在PHP中。

我也使用這些日期的時間戳。有沒有什麼辦法來計算年月和

天差異的那些時間戳。

例如,第一次日期是2008年1月2日,第二次日期是2012年7月5日。 結果是4年5個monts和3天。

我工作的時間戳作爲數據輸入,想知道是否有可用它由兩個輸入時間戳直接計算上面的東西任何功能

回答

15

您可以使用DateTime對象(請注意在datetime構造函數中缺少「,」)。

$datetime1 = new DateTime('2 Jan 2008'); 
$datetime2 = new DateTime('5 July 2012'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%y years %m months and %d days'); 
1

您可以創建兩個datetime對象(www.php.net/datetime)從時間戳。 調用diff方法時,您會得到一個DateInterval對象,該對象具有數年和數月的屬性。

9

你可以用日期時間做到這一點很容易:

$date1 = new DateTime("2008-01-02"); 
$date2 = new DateTime("2012-07-05"); 
$diff = $date1->diff($date2); 

echo "difference " . $diff->y . " years, " . $diff->m." months, ".$diff->d." days " 

Documentation

+0

不二月一個月的工作,它需要31天爲二月月 –

2

你應該看看Carbon,它是在有很多的DateTime的頂漂亮的新的PHP 5.3的lib有用的方法。

對於日期差異:

<?php 
$dtOttawa = Carbon::createFromDate(2000, 1, 1, 'America/Toronto'); 
$dtVancouver = Carbon::createFromDate(2013, 1, 1, 'America/Vancouver'); 
echo $dtOttawa->diffInHours($dtVancouver); 
echo $dtOttawa->diffInDays($dtVancouver); 
echo $dtOttawa->diffInMinutes($dtVancouver); 
echo $dtOttawa->diffInYears($dtVancouver); 

如果你想人類可讀DIFF:

$dt = Carbon::createFromDate(2011, 2, 1); 

echo $dt->diffForHumans($dt->copy()->addMonth());    // 28 days before 
echo $dt->diffForHumans($dt->copy()->subMonth());    // 1 month after