Как преобразовать десятичные секунды в время с долями секунды в PHP - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь решить проблему, в которой мне нужно иметь возможность преобразовать время в секундах с десятичными знаками, такими как 375.844 Мне нужно преобразовать его в следующий формат: HH:MM:SS.0 вместо округления до ближайшей целой секунды Я считаю, что число выше должно отображаться как 00:06:15.8

Это часть более широкой программы, в которой пользователь вводит часы, минуты и секунды с точностью до десятых долей секунды.

Я конвертирую все это в секунды, используя следующую функцию:

public function timetosecs() {
    return $this->hours * (60 * 60) + $this->mins * 60 + $this->secs * 1;
}

Затем он выполняет некоторые вычисления в секундах для их корректировки, умножая на коэффициент 0.866, а затем это функция для преобразования их обратно в формат времени, однако, похоже, он не отображает десятые доли.

  public function secstotime($totalSeconds) {
    $hours = floor($totalSeconds / 3600);
    $totalSeconds %= 3600;
    $minutes = floor($totalSeconds / 60);
    $seconds = floor(($totalSeconds % 60) * 10) / 10;
    return $hours . ":" . $minutes . ":" . $seconds;
}

1 Ответ

0 голосов
/ 03 мая 2018

Используйте функцию sprintf() для установки начальных цифр:

function secstotime($totalSeconds) {
    $startTotalSeconds = $totalSeconds;
    $hours = floor($totalSeconds / 3600);
    $totalSeconds %= 3600;
    $minutes = floor($totalSeconds / 60);
    $seconds = $startTotalSeconds - ($minutes * 60);
    return sprintf("%02d",$hours) . ":" . sprintf("%02d",$minutes) . ":" .sprintf("%.1f", $seconds);
}


//...
echo secstotime(375.844); // prints 00:06:15.8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...