2009-12-12 48 views
0

香港專業教育學院有兩個日期,如:得到兩個日期之間的年份?

2009-11-11 2002-11-11

,我想他們之間多年的 '7'。我該怎麼做?月和日將永遠是相同的,我不想使用 - 。有沒有適合的方式呢?

+1

如果月份和日期將永遠是相同的,那麼你爲什麼不只是從另一年減去一年? – pavium 2009-12-12 09:51:46

+1

「我不想用 - 」:爲什麼不呢? – paxdiablo 2009-12-12 10:08:54

+0

是的,有一個合適的方法,但你排除了。 – GZipp 2009-12-12 14:49:26

回答

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 
0

如果日期的確會始終是相同的,你可以這樣做:

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

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

另外,將它們轉換爲timestamp(mktime),然後減去然後轉換(使用date()中的參數)

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

希望這有助於。

0

假設日期是UNIX時間戳(Unix的時代),「可能」,你可以做到這一點,最快的方式是:

intval(($time2 - $time1)/31556926); 
相關問題