获得2个日期之间的年份?

时间:2009-12-12 09:47:57

标签: php date

我有两个约会日期:

2009-11-11 2002-11-11

我想让他们之间的岁月'7'。我该怎么做?月和日总是相同的,我不想使用 - 。有适当的方式吗?

5 个答案:

答案 0 :(得分:5)

我强烈建议使用Sarfraz Ahmed建议的功能。

如果您想手动完成(并且没有新的DateTime类),它可能如下所示:

<?php

$date1 = strtotime("2009-11-11");
$date2 = strtotime("2002-11-11");

$time_difference = $date1 - $date2;

$seconds_per_year = 60*60*24*365;
$years = round($time_difference / $seconds_per_year);

print_r($years);

答案 1 :(得分:4)

使用php 5.3+,您可以使用DateTime::diff()

$a = new DateTime('2009-11-11');
foreach( array('2002-11-11', '2002-11-12', '2005-05-06') as $dt) {
  $b = new DateTime($dt);
  echo $dt, ' | ', $a->diff($b)->format('%y'), ' | ', $a->diff($b)->format('%y %m %d'), "\n";
}

打印

2002-11-11 | 7 | 7 0 0
2002-11-12 | 6 | 6 11 29
2005-05-06 | 4 | 4 6 5

答案 2 :(得分:1)

$a = new DateTime('2009-11-11');
$b = new DateTime('2002-11-11');
$years = $b->diff($a)->y;
var_dump($years); // int(7)

希望这有帮助。

答案 3 :(得分:0)

如果日期确实总是相同的话,你可以使用它:

$date1 = "2009-11-11";
$date2 = "2002-11-11";

$years = substr($date1,0,4) - substr($date2,0,4); // 7

或者,将它们转换为timestamp(mktime),减去然后转换回来(使用date()上的参数)

答案 4 :(得分:0)

假设日期是UNIX时间戳(Unix Epoch),“可能”最快的方法就是:

intval(($time2 - $time1) / 31556926);