关于php:计算两个给定日期之间的月,年和日作为时间戳


Calculate months, years and days between two given dates as timestamp

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
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个月3天。

我正在研究时间戳作为日期输入,想知道是否有任何可用的函数可以通过两个输入时间戳直接计算上面的内容


您可以为此使用datetime对象(请注意datetime构造函数中缺少"")。

1
2
3
4
$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');

使用datetime可以很容易地做到这一点:

1
2
3
4
5
$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"

文档


您应该看看Carbon,它是一个非常新的php 5.3lib,位于datetime之上,有很多有用的方法。

DIFF日期:

1
2
3
4
5
6
7
<?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:

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

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

您可以从时间戳创建两个日期时间对象(www.php.net/datetime)。调用diff方法时,您会得到一个dateinterval对象,该对象的属性为年和月。