2012-04-11 2 views
0

Я получаю время с помощью PHPPHP Round в 3s

$current_hour = date("G"); 

Теперь скажем, $current_hour равно 20. Как бы я округлить, что до 19 лет? Или если $current_hour равно 00, как бы я обернул это до 22? Я не знаю, если я объяснить это хорошо, но в основном я хочу округлить каждое число с интервалом в 3, так что я получаю следующее:

1 
4 
7 
10 
13 
16 
19 
22 
[back to begining] 

Любое число между должны получить округленный до самого низкого их так 11 было бы 10, 15 - 13 и т. д.

+0

жаль моя математика не так хорошо, если это Мент быть простыми, или я просто не видя это :( –

+0

Итак, вы хотите, чтобы кто-то также приветствовал ваш ужин, а ** ** ** написал ** ваш ** код? У меня есть уверенность в том, что с помощью небольшого умственного приложения вы можете эта проблема нет. – rdlowrey

ответ

2

Простым способом было бы использовать целые операции. Сначала разделите на 3, затем переведите в int, а затем умножьте на 3 снова, с некоторым перемещением, чтобы сохранить нужную вам последовательность.

Пример:

$current_hour = 20; 
echo (intval(($current_hour + 23)/3) * 3 + 1) % 24; // Outputs 19 
+0

Это даст вам последовательность, такую ​​как 0, 3, 6, 9, 12 ... – Arjan

+0

'22/3 = 7.3'' 7 * 3 = 21' Не работает. – webbiedave

+0

Я предположил, что было бы очевидно, что вы добавите 1 для смещения. Отредактировано, чтобы сделать его более ясным. – jli

1
$round = intval(($current_hour - 1)/3) * 3 + 1; 
+0

Также: 'if ($ current_hour == 0) $ current_hour = 24;' – Botanick

0

Я думаю, что это:

($current_hour - ($current_hour % 3)) + 1 
Смежные вопросы