我試圖只在某些條件完成時執行一些更新,其中一個與兩個日期之間的比較有關:從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
什麼的返回值:'的var_dump($實體 - > getLastSyncAt());'? – Rizier123
看到var_dump($ lastModifiedAt)可能也不錯。 – Ugur
可能的重複[如何比較PHP 5.2.8中的兩個DateTime對象?](http://stackoverflow.com/questions/961074/how-do-i-compare-two-datetime-objects-in-php- 5-2-8) –