Округление времени UNIX до более низкого часа в PHP - PullRequest
1 голос
/ 16 августа 2010

Я тщетно пытался округлить текущее время до более низкого часа в PHP.

Вот что я хочу сделать: 1. Возьмите текущее время: $time_now = time(); 2. Округлите его до ближайшего часа: $time_now = $time_now - ($time_now % 3600); 3. Распечатайте его, используя функцию date: print date('d m Y H:i', $time_test);

Но, похоже, происходит то, что напечатанное время - это то, что я хочу + 30 минут. Например: если текущее время 19:03, я получаю вывод 18:30 вместо 19:00 и если время 19:34, я получаю вывод 19:30 вместо 19: 00

Это сводит меня с ума! ИКС( Что не так в этом коде ?! Возможно, это связано с часовым поясом? Мое системное время GMT +5: 30

Ответы [ 4 ]

4 голосов
/ 16 августа 2010

Просто используйте date без печати минут, например:

print date('d m Y H') . ':00';
2 голосов
/ 16 августа 2010

Разве вы не можете сделать просто:

$now = time();
echo date('d m Y H', $now) . ':00';

// or just

echo date('d m Y H') . ':00';

?

Он напечатает вам текущий час и фальшивые минуты.

Если вы хотите использовать эту метку времени, выможно преобразовать его с помощью функции strtotime.

$date = date('d m Y H') . ':00';
$timestamp = strtotime($date);
1 голос
/ 16 августа 2010

Функция, которую вы ищете: этаж .Следующие работы, как вы хотели бы, я думаю:

$time_now = floor(time() / 3600) * 3600;
print date('d-m-Y H:i', $time_now);
0 голосов
/ 12 марта 2014
$d = strtotime($date);
$rounded = intval($d / 3600) * 3600;
$formatted_rounded = date('Y-m-d H:i:s', $rounded)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...