То есть в переменную
$time
попадает строке в формате '01:30' типо такого. Дальше в конструкторе она делиться на
array (size=2)
0 =>
array (size=2)
0 => int 0
1 => int 1
1 =>
array (size=2)
0 => int 3
1 => int 0
class TimeModel
{
private $hour1;
private $hour2;
private $minut1;
private $minut2;
/**
* Переводиться в формате ММ:СС
* TimeModel constructor.
*
* @param string $time
*/
public function __construct(string $time)
{
if ($time[0] == '0'){
$time = substr($time, 1);
}
$arDate = preg_split('/:/', $time);
$this->hour1 = (int)$arDate[0][0];
$this->hour2 = (int)$arDate[0][1] ?? null;
$this->minut1 = (int)$arDate[1][0];
$this->minut2 = (int)$arDate[1][1];
}
/**
* Округление времени до пяти минут
* @return string
*/
public function getRounding() :string
{
$arTime = [];
$arTime[0][0] = $this->hour1;
$arTime[0][1] = $this->hour2;
$arTime[1][0] = $this->minut1;
$arTime[1][1] = $this->minut2;
if ($this->minut2 >= 1 && $this->minut2 <= 4){
$arTime[1][1] = 5;
} else if ($this->minut2 >= 6 && $this->minut2 <= 9){
if ($this->minut1 < 5) {
$arTime[1][0] = $this->minut1 + 1;
} else {
if ($this->minut1 >= 5) {
if (!$this->hour2) {
if ($this->hour1 == 9){
$arTime[0][1] = 0;
}
$arTime[0][0] = $this->hour1 + 1;
} else {
if ($this->hour2 < 9){
$arTime[0][1] = $this->hour2 + 1;
} else {
$arTime[0][0] = 1;
$arTime[0][1] = 0;
}
}
$arTime[1][0] = 0;
} else {
$arTime[0][1] = $this->minut1 + 1;
$arTime[1][0] = 0;
}
}
$arTime[1][1] = 0;
}
return $arTime[0][0].$arTime[0][1].':'.$arTime[1][0].$arTime[1][1];
}
}
метод getRounding мне кажется что он слишком большой, но пока что не пойму как можно его сократить.
Сам метод getRounding округляет цифру до 5 минут. Допустим, чтобы было не "14:01", а "14:00", не "7:23", а "7:25"
И возможно ли вообще его сократить?