Найти ближайший следующий час

как я могу найти следующий ближайший час в php

так, например, если текущее время равно 4:15, следующий час будет 5 и т.д.

$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400';
$date = new DateTime( $dateString );
echo $date->format( 'H:i:s' );

дает мне время от строки, и я хочу расширить его и получить следующий ближайший час

Ответ 1

Поставьте любую подходящую дату() в:

function roundToNextHour($dateString) {
    $date = new DateTime($dateString);
    $minutes = $date->format('i');
    if ($minutes > 0) {
        $date->modify("+1 hour");
        $date->modify('-'.$minutes.' minutes');
    }
    return $date;
}

Ответ 2

$nextHour = (intval($date->format('H'))+1) % 24;
echo $nextHour; // 5

Ответ 3

Можете ли вы просто взять кусочки (часы, минуты, секунды) и получить следующий час?

$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400';
$date = new DateTime( $dateString );

echo $date->format( 'H:i:s' );
echo "\n";

$nexthour = ($date->format('H') + ($date->format('i') > 0 || $date->format('s') > 0 ? 1 : 0)) % 24;
echo "$nexthour:00:00";

Ответ 4

<?php

$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400';

$date = new DateTime( $dateString );
$date->modify('+1 hour');

echo $date->format('H:i:s').PHP_EOL;

// OR

echo date('H:i:s', strtotime($dateString) + 60 * 60).PHP_EOL;

Ответ 5

Как мне просто нужно что-то подобное (следующий полный час) здесь мое решение:

$now = time();
$nextFullHour = date(DATE_ATOM, $now + (3600 - $now % 3600));

Заменив 3600 например, с 60 вы получите следующую полную минуту...
Вы также можете заменить $now на любую другую метку времени, если она вам не нужна относительно текущего времени.

Ответ 6

Вот так:

<?php
    echo date("H:00",strtotime($date. " + 1hour "));
?>

Ответ 7

попробуйте его в течение текущего времени, если вам нужно поставить второй аргумент в функцию даты

<?php echo date('H')+1; ?>    

очень приятный материал

Ответ 8

Это мое решение:

$dateTime = new \DateTime();
$dateTime->add(new \DateInterval('PT1H'))
         ->setTime($dateTime->format('H'), '00');

Ответ 9

Еще один:

$current_datetime = new DateTimeImmutable();
$next_full_hour_datetime = $current_datetime
    ->modify(
        sprintf(
            '+%d seconds',
            3600 - ($current_datetime->getTimestamp() % 3600)
        )
    );