php: округлить минуты до ближайшей четверти часа, затем сделать больше

Первоначальная проблема такова: возьмите количество минут -> превратите в четверть часа -> 1 четверть часа - это 1 единица -> единицы вывода.

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

Таким образом, пользователь вводит количество минут (не часы и минуты, а просто минуты), и сайт должен вывести количество единиц. Единица – четверть часа. Минуты всегда округляются до ближайшей четверти часа. Я знаю, что каким-то образом буду использовать ceil и, возможно, (?) number_format, но я просто не могу заставить его работать правильно. Любая помощь приветствуется.


person mikepreble    schedule 07.07.2011    source источник


Ответы (4)


Пытаться:

$units = ceil($minutes / 15) 
person christopher_b    schedule 07.07.2011
comment
вау, я делал это намного сложнее, чем это было на самом деле. это сработало. Спасибо. - person mikepreble; 07.07.2011

Мой взгляд на это:

return (round($minutes / 15) * 15) % 60;

Производит:

for($i=0; $i<60; $i++) {
    echo $i . ' -> ' . roundQuarter($i) . '<br/>';
}

function roundQuarter($minutes) {
    return (round($minutes / 15) * 15) % 60;
}

0 -> 0
1 -> 0
2 -> 0
3 -> 0
4 -> 0
5 -> 0
6 -> 0
7 -> 0
8 -> 15
9 -> 15
10 -> 15
11 -> 15
12 -> 15
13 -> 15
14 -> 15
15 -> 15
16 -> 15
17 -> 15
18 -> 15
19 -> 15
20 -> 15
21 -> 15
22 -> 15
23 -> 30
24 -> 30
25 -> 30
26 -> 30
27 -> 30
28 -> 30
29 -> 30
30 -> 30
31 -> 30
32 -> 30
33 -> 30
34 -> 30
35 -> 30
36 -> 30
37 -> 30
38 -> 45
39 -> 45
40 -> 45
41 -> 45
42 -> 45
43 -> 45
44 -> 45
45 -> 45
46 -> 45
47 -> 45
48 -> 45
49 -> 45
50 -> 45
51 -> 45
52 -> 45
53 -> 0
54 -> 0
55 -> 0
56 -> 0
57 -> 0
58 -> 0
59 -> 0
person kluverp    schedule 08.10.2020

$rounded = floor($minutes / 15);

1 minute / 15 = 0.0666 -> 0
14 minute / 15 = 0.9333 -> 0;
15 / 15 = 1 -> 1;

Это даст вам 0-> 3 для диапазона 15-минутных периодов. Если вы хотите 1-4, используйте вместо этого ceil().

person Marc B    schedule 07.07.2011

Разве это не помогает?

$numberOfMinutes = 135;

$numberOfFifteenMinuteUnits = round($numberOfMinutes / 15);

echo $numberOfFifteenMinuteUnits;
person azzy81    schedule 07.07.2011