2011-04-13 100 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分鐘)