香港專業教育學院有兩個日期,如:得到兩個日期之間的年份?
2009-11-11 2002-11-11
,我想他們之間多年的 '7'。我該怎麼做?月和日將永遠是相同的,我不想使用 - 。有沒有適合的方式呢?
香港專業教育學院有兩個日期,如:得到兩個日期之間的年份?
2009-11-11 2002-11-11
,我想他們之間多年的 '7'。我該怎麼做?月和日將永遠是相同的,我不想使用 - 。有沒有適合的方式呢?
用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
如果日期的確會始終是相同的,你可以這樣做:
$date1 = "2009-11-11";
$date2 = "2002-11-11";
$years = substr($date1,0,4) - substr($date2,0,4); // 7
另外,將它們轉換爲timestamp(mktime),然後減去然後轉換(使用date()中的參數)
我強烈推薦使用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);
$a = new DateTime('2009-11-11');
$b = new DateTime('2002-11-11');
$years = $b->diff($a)->y;
var_dump($years); // int(7)
希望這有助於。
假設日期是UNIX時間戳(Unix的時代),「可能」,你可以做到這一點,最快的方式是:
intval(($time2 - $time1)/31556926);
如果月份和日期將永遠是相同的,那麼你爲什麼不只是從另一年減去一年? – pavium 2009-12-12 09:51:46
「我不想用 - 」:爲什麼不呢? – paxdiablo 2009-12-12 10:08:54
是的,有一個合適的方法,但你排除了。 – GZipp 2009-12-12 14:49:26