php comparing dates for day change

MaurerPower picture MaurerPower · May 3, 2012 · Viewed 9.3k times · Source

I have found hundreds of questions and answers for topics SIMILAR to this on SO, however, none match my needs specifically and I am stumped.

I have a variable in y-m-d format and I need to see if it was created on the previous calendar day (not 24 hours previous, but on the previoous calendar day).

ie. $tDate = '12-05-2';

If object created May 2, 2012 at 11:59pm(stored time) I need a comparison to May 3, 2012 12:01 am(current time) to equal true.

If object created May 2, 2012 at 11:51pm(stored time) I need a comparison to May 2, 2012 11:58pm(current time) to equal false.

I know if these were stored in a MySQL db and pulled from a field, MySQL could figure that out easily. In this case, however, that solution is not an option.

This comparison must be done entirely in php.

I know it's an eccentric question, but hey, that's what the guru's at StackOverflow excel at! Looking forward to seeing the replies!

UPDATE

Figured this out as:

    $dTest = '12-05-02';
    $dTest = explode('-',$dTest);
    $dTest2 = date('y-m-d');
    $dTest2 = explode('-',$dTest2);

    if ($dTest[2]<$dTest2[2]){
        echo '<br />Posted Yesterday<br />';
    } else {
        echo '<br />Posted Today<br />';
    }

Is there a more efficient solution? Seems to work, but I figure there must be a more optimal/elegant solution?

SOLVED

$tHolder = '12-05-12';
$voteDate = date("y-m-d", strtotime($tHolder));
$today = date("y-m-d", strtotime("today"));

if ($voteDate === $today)
{
   echo "this was today's post";
}
elseif ($voteDate < $today)
{
   echo "this was previous to today";
}

Answer

Laurence picture Laurence · May 3, 2012

Firstly - I dont think your "solutions" works. What happens when todays date is 12-06-01 and the post was on 12-05-31 - it will give the wrong answer because "31" > "1"

Anyway - I think the correct answer is:

$yesterday =date("y-m-d", strtotime("yesterday"));
$today = date("y-m-d", strtotime("today"));


if ($yesterday === $tDate)
{
   echo "this was yesterdays post";
}
elseif ($today === $tDate)
{
   echo "this was todays post";
}
else
{
    echo "this was NOT yesterday or today":
}