sintonia/airtime_mvc/application/models/formatters/LengthFormatter.php

56 lines
1.3 KiB
PHP
Raw Normal View History

<?php
class LengthFormatter {
/**
* @string length
*/
private $_length;
/*
* @param string $length formatted H:i:s.u (can be > 24 hours)
*/
public function __construct($length)
{
$this->_length = $length;
}
public function format() {
$pieces = explode(":", $this->_length);
$seconds = round($pieces[2], 1);
$seconds = number_format($seconds, 1);
list($seconds, $milliStr) = explode(".", $seconds);
if (intval($pieces[0]) !== 0) {
$hours = ltrim($pieces[0], "0");
}
$minutes = $pieces[1];
//length is less than 1 hour
if (!isset($hours)) {
if (intval($minutes) !== 0) {
$minutes = ltrim($minutes, "0");
}
//length is less than 1 minute
else {
unset($minutes);
}
}
if (isset($hours) && isset($minutes) && isset($seconds)) {
$time = sprintf("%d:%02d:%02d.%s", $hours, $minutes, $seconds, $milliStr);
}
else if (isset($minutes) && isset($seconds)) {
$time = sprintf("%d:%02d.%s", $minutes, $seconds, $milliStr);
}
else {
$time = sprintf("%d.%s", $seconds, $milliStr);
}
return $time;
}
}