Time\Duration::fromIso8601DurationString

(PHP 8 >= 8.6.0)

Time\Duration::fromIso8601DurationString — Creates a duration from an ISO 8601 duration string

Description

public static function Time\Duration::fromIso8601DurationString(string $specification): Time\Duration

Creates a non-negative duration from the time part of an » ISO 8601 duration specification, such as PT1H30M.

Parameters

specification

An ISO 8601 duration specification. The format starts with the letter P, for period, followed by the letter T, for time, and one or more integer values, each followed by a period designator:

Period Designator Description
H hours
M minutes
S seconds

The designators must appear in this order, but each is optional. A value may exceed the natural range of its unit, so PT90M and PT1H30M describe the same duration.

The date designators Y, M, W and D are rejected, because years, months, weeks and days do not have a fixed length. Fractional values, such as PT0.5S, are not supported either.

Return Values

Returns a new Time\Duration object.

Errors/Exceptions

Examples

Example #1 Time\Duration::fromIso8601DurationString() example

<?php
var_dump(\Time\Duration::fromIso8601DurationString('PT1H30M'));

var_dump(\Time\Duration::fromIso8601DurationString('PT90S')->seconds);

try {
    \Time\Duration::fromIso8601DurationString('P1D');
} catch (\Time\TimeException $e) {
    echo $e->getMessage(), PHP_EOL;
}

try {
    \Time\Duration::fromIso8601DurationString('PT0.5S');
} catch (\Time\TimeException $e) {
    echo $e->getMessage(), PHP_EOL;
}

The above example will output:

object(Time\Duration)#1 (3) {
  ["seconds"]=>
  int(5400)
  ["nanoseconds"]=>
  int(0)
  ["negative"]=>
  bool(false)
}
int(90)
The ISO 8601 duration string may only contain the time (T) aspect
The ISO 8601 duration string could not be parsed

See Also

+add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top