2013-01-25 215 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