/** * @static * @param string|int $interval string interval in format: #d#h#m ie: 22d4h12m or total seconds * @return TimeInterval */ public static function Parse($interval) { if (empty($interval)) { return new TimeInterval(0); } if (!is_numeric($interval)) { $seconds = DateDiff::FromTimeString($interval)->TotalSeconds(); } else { $seconds = $interval; } return new TimeInterval($seconds); }
public function testCanGetDifferenceFromTime() { $seconds = 12 * 60 * 60 + 60 * 35; $str1 = "0d12h35m"; $diff1 = DateDiff::FromTimeString($str1); $this->assertEquals($seconds, $diff1->TotalSeconds()); $this->assertEquals(12, $diff1->Hours()); $this->assertEquals(35, $diff1->Minutes()); $this->assertEquals(0, $diff1->Days()); $this->assertEquals("12 hours 35 minutes", $diff1->__toString()); $seconds2 = 4 * 24 * 60 * 60 + 12 * 60 * 60 + 60 * 35; $str2 = "4d12h35m"; $diff2 = DateDiff::FromTimeString($str2); $this->assertEquals($seconds2, $diff2->TotalSeconds()); $this->assertEquals(12, $diff2->Hours()); $this->assertEquals(35, $diff2->Minutes()); $this->assertEquals(4, $diff2->Days()); $this->assertEquals("4 days 12 hours 35 minutes", $diff2->__toString()); $diff3 = DateDiff::FromTimeString("25h0m"); $this->assertEquals(25 * 60 * 60, $diff3->TotalSeconds()); $this->assertEquals(0, DateDiff::FromTimeString("dhm")->TotalSeconds()); $this->assertEquals(0, DateDiff::FromTimeString("hm")->TotalSeconds()); $this->assertEquals(0, DateDiff::FromTimeString("dm")->TotalSeconds()); }