2012-02-20 42 views
1

不幸的是我不能使用DateTime::Diff,并且正在寻找一种方法来转换我当前的日期时间格式,以便我可以减去并查找小时和分钟之间的差异,如下所示:PHP <5.3两小时之差:: min

// 2:11pm 2-20-2012 
$opendate = '2012-02-20T14:11:03-05:00'; 

// 6:22pm 2-20-2012 
$closedate = '2012-02-20T18:22:50-05:00'; 

$diff_date = $closedate - $opendate 

我想$diff_date以小时::分钟格式返回,如'4小时11分钟'。

如果这将是这种有益的,另一种替代上述格式化倍是:

 $removeT = "T"; 
     $replaceSPACE = " "; 
//returns datetime like '2012-02-20 14:11:03' 
     $r = str_replace($removeT, $replaceSPACE, $opendate[$i]); 
     $r = substr($r, 0, 19); 
//returns datetime like '2012-02-20 18:22:50' 
     $s = str_replace($removeT, $replaceSPACE, $closedate[$i]); 
     $s = substr($s, 0, 19); 
+0

检查了这一点,这应该给你你需要的东西: http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-使用-php – 2012-02-20 21:57:33

回答

2

都转换为UNIX的时间戳,然后减去从另一个。你可以很容易地转换成几小时和几分钟。

$secondsDiff = strtotime($closedate) - strtotime($opendate); 
+0

好吧,即时通讯非常新的PHP,但从我的理解,我会将这些时间“值”转换为UNIX使用'mktime()'? – ToddN 2012-02-20 21:58:02

+0

这工作很好,这转换成秒。我会做数学计算小时和分钟谢谢你。 – ToddN 2012-02-20 22:04:05

+0

当你每次都有组件(小时,分钟......)时,你可以使用'mktime()'。 'strtotime()'试图将一个格式化的时间字符串解析成一个时间戳(与'date()'结合使用时非常有用)。 – KingCrunch 2012-02-21 08:10:30