2011-04-13 111 views
1

我使用的是zend框架,我想知道两个日期之间的小时差异。 我知道如何在核心php中使用strtotime来完成它。小时Zend中的两个日期之间的差异

但我想在Zend,如果可能的话。

例:这是我的日期时间格式日期:

2011-04-13 23:00:00

2011-04-14 15:45:00

回答

4

似乎有一个sub()方法Zend_Date

sub($date, $part = null, $locale = null)
减去 当前对象的日期有一个区域$locale$part $date

使用Zend_Date::HOUR为$一部分应该做的伎俩,我想:

$num_month = $firstDate->sub($secondDate, Zend_Date::HOUR); 


作为一个旁注:与strtotime()工作时,日期使用UNIX Timestamps reprensented - 这只能从1970年去到2038年(在32位系统上,至少)

它可能会更聪明的与DateTime类一起工作,其中低于一个来操纵(虚拟)无限范围的日期。

+1

,所以它会发挥巨大的性能问题。尽管我们将不得不创建Zend_Date的对象。你总是有答案MARTIn :-) – 2011-04-13 12:25:02

+1

那么,如果你正在使用Zend_Date,你应该使用Zend_Date方法;如果不与Zend_Date一起工作,当然...使用别的东西;-) *(并不总是^^)* – 2011-04-13 12:26:01

4

为什么你想在Zend有这样的功能,当你可以用核心PHP来做这件事情?

只需使用核心PHP。

+0

我想使用Zend为此目的,我希望存在一些实现此功能的功能......但在核心php中,它始终保持优良和简单。 – 2011-04-13 12:20:58

+3

那么为什么人们在那里发明了框架?让我们的生活更轻松,我是对吗? – tawfekov 2011-04-13 12:24:40

+1

但是,你不会期望在框架中有相当的回声。简单的计算总是可以在核心中执行 – 2011-04-13 12:29:08

0

谢谢,我会达成一个解决方案是这样的:

$firstDay = new Zend_Date('2011-04-13 23:00:00', 'YYYY-MM-DD h:i:s'); 

$lastDay = new Zend_Date('2011-04-14 15:45:00', 'YYYY-MM-DD h:i:s'); 

$diff = $lastDay->sub($firstDay)->toValue(); 

$days = ceil($diff/60/60); 

最后我能得到17小区值,但无法得到确切的差异(16小时,45分钟)