PHP用H:i:s格式计算两次

i'm trying to find and calculate between startime, finish time as: starttime + 1 hour and current time. if current time is between start and finish i must be print message such as please try after 1 hour:

$current_date_time = new DateTime("now", new DateTimeZone("Asia/Tehran"));
$user_current_time = $current_date_time->format("H:i:s");

$start_limit_time = date("H:i:s",strtotime('2015-09-15 14:57:31'));
$finish_limit_time = date('H:i:s', strtotime($start_limit_time) + (60 * 60 * 1));

$date1 = DateTime::createFromFormat('H:i:s', $user_current_time);
$date2 = DateTime::createFromFormat('H:i:s', $start_limit_time);
$date3 = DateTime::createFromFormat('H:i:s', $finish_limit_time);
if ($date1 > $date2 && $date1 < $date3)
{
    echo 'here';
}

this code is not correct and i can not fix that,

You can try this, it shows the difference in minutes:

$current_date_time = new DateTime("now", new DateTimeZone("Asia/Tehran"));
$user_current_time = $current_date_time->format("H:i:s");

$start_limit_time = date("H:i:s",strtotime('2015-09-15 14:57:31'));
$finish_limit_time = date('H:i:s', strtotime($start_limit_time) + (60 * 60 * 1));

$date1 = DateTime::createFromFormat('H:i:s', $user_current_time);
$date2 = DateTime::createFromFormat('H:i:s', $start_limit_time);
$date3 = DateTime::createFromFormat('H:i:s', $finish_limit_time);

if ($date1 > $date2 && $date1 < $date3)
{
    $tryAgainIn = $date3->diff( $date1 );

    // just minutes
    echo "try again in ".$tryAgainIn->format( "%i minutes" );

    // or hours and minutes
    $hours   = $tryAgainIn->format('%h');
    $minutes = $tryAgainIn->format('%i');
    echo "try again in $hours hours and $minutes minutes";
}

For more information take a look at: DateTime::diff

At first you should avoid operating with strings format, as they should only be used IMHO to printing and retrieving data from outside. Use only timestamp or OOP methods.

I believe, that this is something you are looking for:

$startTime = new DateTime('2015-09-15 14:57:31');
$endTime = clone $startTime;
$endTime->modify('+1 hour');


if ($startTime->getTimestamp() <= time() && time() < $endTime->getTimestamp()) {
    echo 'here';
}

I wonder why you need to use H:i:s format. Can you give some bigger picture?


Edit: Try this, as prior to now I did not fully understand what you want to do ;)

$origin = new DateTime('2015-09-15 14:57:31');

$startTime = new DateTime('today '.$origin->format('H:i:s'));
$endTime = clone $startTime;
$endTime->modify('+1 hour');


if ($startTime->getTimestamp() <= time() && time() < $endTime->getTimestamp()) {
    echo 'here';
}