Add TimeCode::fromSeconds method
This commit is contained in:
parent
05a8a6c063
commit
3fa1ea1f4f
2 changed files with 48 additions and 0 deletions
|
|
@ -63,4 +63,30 @@ class TimeCode
|
||||||
|
|
||||||
return new static($hours, $minutes, $seconds, $frames);
|
return new static($hours, $minutes, $seconds, $frames);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates timecode from number of seconds.
|
||||||
|
*
|
||||||
|
* @param float $seconds
|
||||||
|
*
|
||||||
|
* @return TimeCode
|
||||||
|
*/
|
||||||
|
public static function fromSeconds($quantity)
|
||||||
|
{
|
||||||
|
$minutes = $hours = $frames = 0;
|
||||||
|
|
||||||
|
$frames = round(100 * ($quantity - floor($quantity)));
|
||||||
|
$seconds = floor($quantity);
|
||||||
|
|
||||||
|
if ($seconds > 59) {
|
||||||
|
$minutes = floor($seconds / 60);
|
||||||
|
$seconds = $seconds % 60;
|
||||||
|
}
|
||||||
|
if ($minutes > 59) {
|
||||||
|
$hours = floor($minutes / 60);
|
||||||
|
$minutes = $minutes % 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new static($hours, $minutes, $seconds, $frames);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,4 +35,26 @@ class TimeCodeTest extends TestCase
|
||||||
{
|
{
|
||||||
TimeCode::fromString('lalali lala');
|
TimeCode::fromString('lalali lala');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider provideSeconds
|
||||||
|
*/
|
||||||
|
public function testFromSeconds($seconds, $expected)
|
||||||
|
{
|
||||||
|
$tc = TimeCode::fromSeconds($seconds);
|
||||||
|
$this->assertEquals($expected, (string) $tc);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function provideSeconds()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array(0.467, '00:00:00.47'),
|
||||||
|
array(12.467, '00:00:12.47'),
|
||||||
|
array(59.867, '00:00:59.87'),
|
||||||
|
array(72.467, '00:01:12.47'),
|
||||||
|
array(3599.467, '00:59:59.47'),
|
||||||
|
array(3600.467, '01:00:00.47'),
|
||||||
|
array(86422.467, '24:00:22.47'),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue