Search code examples
phpdatetimetimercountdown

PHP Countdown Timer mistake


Well the problem is when time gets to 23h.00m it glitches and counts 1 hour until 00h.00m and then again works fine.
Can I stop timer from 23h:00m - 00h:00m and then start again?
Or after 23.00 make it go again from 23h.59m.59s?

date_default_timezone_set('Europe/Tallinn');
$now = new DateTime();

$future_date = new DateTime('23:00:00');

$interval = $future_date->diff($now);

echo $interval->format("%h hours, %i minutes, %s seconds");

Solution

  • Here's what you could do: check when the date (now) is greater than the future date, and if so, add one day to that future date

    Code:

    $now = new DateTime();
    
    $future_date = new DateTime('23:00:00');
    if ($now > $future_date) {
        $future_date->modify('+1 day');
    }
    
    $interval = $future_date->diff($now, false);
    echo $interval->format("%h hours, %i minutes, %s seconds");