How do I compare two DateTime objects in PHP 5.2.8?
datetime, php
Solution
The following seems to confirm that there are comparison operators for the DateTime class:
dev:~# php
<?php
date_default_timezone_set('Europe/London');
$d1 = new DateTime('2008-08-03 14:52:10');
$d2 = new DateTime('2008-01-03 11:11:10');
var_dump($d1 == $d2);
var_dump($d1 > $d2);
var_dump($d1 < $d2);
?>
bool(false)
bool(true)
bool(false)
dev:~# php -v
PHP 5.2.6-1+lenny3 with Suhosin-Patch 0.9.6.2 (cli) (built: Apr 26 2009 20:09:03)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
dev:~#
Problem
Having a look on the PHP documentation, the following two methods of the `DateTime` object would both seem to solve my problem: - DateTime::diff : Get the difference and use that to determine which is more ancient. - DateTime::getTimestamp : Get the UNIX timestampt and compare those. Both these methods are marked in the doco as being available in version >= 5.3 (and, not surprisingly, if I try to call them I find they don't exist). I can't find any specific documentation for 5.2.8 so I am not sure if there are equivalent methods in my version. I have Googled the problem and found an eclectic range of solutions, none of which answer my very simple requirements: - How do I compare two DateTime objects? - Where can I find the doco for previous PHP versions? Specifically version 5.2.8? For some context, I have the following code: ``` $st_dt = new DateTime(verifyParam ('start_date')); $end_dt = new DateTime(verifyParam ('end_date')); // is the end date more ancient than the start date? if ($end_dt < $start_dt) ``` Apparently there is no comparison operator on this guy. Edit Apparently my assumptions were completely false (thanks Milen for illustrating this so effectively). There is a comparison operator and it works just fine thanks. Sometimes I really miss a compiler. The bug is in the code above, I am sure you will find it much faster than I did :).