1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?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()
- {
- if (!preg_match("/^[0-9]{2}:[0-9]{2}:[0-9]{2}/", $this->_length)) {
- return $this->_length;
- }
- $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);
- } elseif (isset($minutes) && isset($seconds)) {
- $time = sprintf("%d:%02d.%s", $minutes, $seconds, $milliStr);
- } else {
- $time = sprintf("%d.%s", $seconds, $milliStr);
- }
- return $time;
- }
- }
|