2015-06-24 80 views
0

我試圖只在某些條件完成時執行一些更新,其中一個與兩個日期之間的比較有關:從DB獲取並由Symfony2作爲DateTime對象返回第二個從循環獲取字符串並轉換爲DateTime對象。如何將DateTime對象與從字符串創建的DateTime進行比較

這是明碼我測試:

$last = new \DateTime('2015-01-21T19:44:25.000Z'); 
$current = new \DateTime('2015-06-23 22:10:23'); 

if ($last > $current) { 
    echo 'yes'; 
} else { 
    echo 'no'; 
} 

輸出沒有。現在,如果我嘗試比較相同的OOP如下:

$lastModifiedAt = new \DateTime($row['LastModifiedDate']); 
$lastSyncAt = $entity->getLastSyncAt(); 

if ($lastModifiedAt > $lastSyncAt) { 
    .... 
} 

這是var_export($lastModifiedAt)var_export($lastSyncAt)輸出:

DateTime::__set_state(array(
    'date' => '2015-06-16 19:23:41.000000', 
    'timezone_type' => 2, 
    'timezone' => 'Z', 
)) 

DateTime::__set_state(array(
    'date' => '2015-06-24 07:35:14.000000', 
    'timezone_type' => 3, 
    'timezone' => 'America/Caracas', 
)) 

的執行總是在條件,爲什麼進入?我在比較中做錯了什麼?

編輯

這很奇怪我的行爲,但也許是錯的是我的代碼。由於@馬爾欽 - ORLOWSKI我已經運行下面的測試也:

var_dump($lastModifiedAt == $lastSyncAt); 
var_dump($lastModifiedAt > $lastSyncAt); 
var_dump($lastModifiedAt < $lastSyncAt); 

這是結果:

bool(false) 
bool(false) => this is the comparison I am doing 
bool(true) 

所以比較是對的,也許是別的東西在我的代碼,反正, thx

+1

什麼的返回值:'的var_dump($實體 - > getLastSyncAt());'? – Rizier123

+0

看到var_dump($ lastModifiedAt)可能也不錯。 – Ugur

+1

可能的重複[如何比較PHP 5.2.8中的兩個DateTime對象?](http://stackoverflow.com/questions/961074/how-do-i-compare-two-datetime-objects-in-php- 5-2-8) –

回答

-2

您可以使用getTimestamp():

$date = new DateTime(); 
echo $date->getTimestamp(); 

和:

if ($last->getTimestamp() > $current->getTimestamp()) { 
    echo 'yes'; 
} else { 
    echo 'no'; 
} 
+0

嘿傢伙,我在[編輯之前](http://stackoverflow.com/revisions/31026954/1)上回答了<< –