How can I check if the current date/time is past a set date/time?
I'm trying to write a script that will check if the current date/time is past the 05/15/2010 at 4PM
How can I use PHP's date() function to perform this check?
Solution 1:
Since PHP >= 5.2.2 you can use the DateTime
class as such:
if (new DateTime() > new DateTime("2010-05-15 16:00:00")) {
# current time is greater than 2010-05-15 16:00:00
# in other words, 2010-05-15 16:00:00 has passed
}
The string passed to the DateTime constructor is parsed according to these rules.
Note that it is also possible to use time
and strtotime
functions. See original answer.
Solution 2:
There's also the DateTime class which implements a function for comparison operators.
// $now = new DateTime();
$dtA = new DateTime('05/14/2010 3:00PM');
$dtB = new DateTime('05/14/2010 4:00PM');
if ( $dtA > $dtB ) {
echo 'dtA > dtB';
}
else {
echo 'dtA <= dtB';
}
Solution 3:
Check PHP's strtotime
-function to convert your set date/time to a timestamp: http://php.net/manual/en/function.strtotime.php
If strtotime
can't handle your date/time format correctly ("4:00PM" will probably work but not "at 4PM"), you'll need to use string-functions, e.g. substr
to parse/correct your format and retrieve your timestamp through another function, e.g. mktime
.
Then compare the resulting timestamp with the current date/time (if ($calulated_timestamp > time()) { /* date in the future */ }
) to see whether the set date/time is in the past or the future.
I suggest to read the PHP-doc on date/time-functions and get back here with some of your source-code once you get stuck.