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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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');
|
||||
}
|
||||
|
||||
/**
|
||||
* @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