Найти ближайший следующий час
как я могу найти следующий ближайший час в 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)
)
);