tags:

views:

5083

answers:

1

This seems like something that should be pretty straight forward, but I have been stuck page faulting this problem for a while now, so here goes.

Having a look on the PHP documentation , the following two methods of the DateTime object would both seem to solve my problem:

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($_POST['start_date']);
$end_dt = new DateTime($_POST['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 :).

I look forward to my embarrassment at the simplicity of your solution.

EDIT: And sure enough, embarrassment ensues ...

+11  A: 

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:~#
Milen A. Radev
Thanks Milen, looks like I just needed my false assumptions removed and suddenly the glaring bug in my code became obvious to me.
Cannonade
Hmm, this is interesting. Maybe at some point we'll be able to overload operators in user-defined classes.
Ionuț G. Stan
From http://www.php.net/manual/en/language.operators.comparison.php Built-in classes can define its own comparison, different classes are uncomparable, same class - compare properties the same way as arrays (PHP 4), PHP 5 has its own explanation
Saul