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

时间:2013-01-25 09:48:06

标签: php

  

可能重复:
  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天。

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

4 个答案:

答案 0 :(得分:23)

您可以使用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 :(得分:11)

您可以使用DateTime轻松完成此操作:

$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

答案 2 :(得分:2)

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

对于日期差异:

<?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);

如果你想要人类可读的差异:

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

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

答案 3 :(得分:1)

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