php8.5
Home/ Manual/ time / duration/ Time\Duration::fromIso8601DurationString

Time\Duration::fromIso8601DurationString

PHP function Edit on GitHub ✎

(PHP 8 >= 8.6.0)

Creates a duration from an ISO 8601 duration string

Description

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 DesignatorDescription
Hhours
Mminutes
Sseconds

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

  • If specification cannot be parsed as an ISO 8601 duration, a Time\TimeException is thrown.
  • If specification contains a date designator (Y, M, W or D), a Time\TimeException is thrown.
  • If specification is a date/time or a time interval rather than a duration, a Time\TimeException is thrown.

Examples

Time\Duration::fromIso8601DurationString example

php
<?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:

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

  • Time\Duration::fromSeconds
  • Time\Duration::fromHours

Source: reference/datetime/time/duration/fromiso8601durationstring.xml · from the official PHP manual (php/doc-en)