Interprets a ISO8601 duration value relative to a given timestamp.
public static parseDuration ( string $duration, integer | null $timestamp = null ) : integer | null | ||
$duration | string | The duration, as a string. |
$timestamp | integer | null | The unix timestamp we should apply the duration to. Optional, default to the current time. |
Результат | integer | null | The new timestamp, after the duration is applied. |
/** * Tests the parseDuration method of the OneLogin_Saml2_Utils * * @covers OneLogin_Saml2_Utils::parseDuration */ public function testParseDuration() { $duration = 'PT1393462294S'; $timestamp = 1393876825; $parsedDuration = OneLogin_Saml2_Utils::parseDuration($duration, $timestamp); $this->assertEquals(2787339119, $parsedDuration); $parsedDuration2 = OneLogin_Saml2_Utils::parseDuration($duration); $this->assertTrue($parsedDuration2 > $parsedDuration); $invalidDuration = 'PT1Y'; try { $parsedDuration3 = OneLogin_Saml2_Utils::parseDuration($invalidDuration); $this->assertFalse(true); } catch (Exception $e) { $this->assertContains('Invalid ISO 8601 duration', $e->getMessage()); } $newDuration = 'P1Y1M'; $parsedDuration4 = OneLogin_Saml2_Utils::parseDuration($newDuration, $timestamp); $this->assertEquals(1428091225, $parsedDuration4); $negDuration = '-P14M'; $parsedDuration5 = OneLogin_Saml2_Utils::parseDuration($negDuration, $timestamp); $this->assertEquals(1357243225, $parsedDuration5); }