---
name: "HTML::Microformats::Datatype::Duration"
section: "3pm"
platform: "linux"
package: "libhtml-microformats-perl"
version: "0.105-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTML::Microformats::Datatype::Duration"
---

# HTML::Microformats::Datatype::Duration(3pm)

floating periods of time

## NAME

HTML::Microformats::Datatype::Duration - floating periods of time

## SYNOPSIS

```
 my $duration = HTML::Microformats::Datatype::Duration->new($d);
 print "$duration\n";
```

## DESCRIPTION

### Constructors

- "$d = HTML::Microformats::Datatype::Duration-\>new($duration)"

  Creates a new HTML::Microformats::Datatype::Duration object.

  `$duration` is a DateTime::Duration object.

- "$d = HTML::Microformats::Datatype::Duration-\>parse($string, $elem, $context)"

  Creates a new HTML::Microformats::Datatype::Duration object.

  `$string` is a duration represented in ISO 8601 format, for example: 'P1Y' or 'PT2H29M58.682S'. `$elem` is the XML::LibXML::Element being parsed. `$context` is the document context.

  The standard way of representing durations in Microformats is as an ISO 8601 string:

  ```
   <abbr class="duration" title="P4DT4H">4 and a half days</abbr>
  ```

  This constructor also supports a number of experimental microformat duration patterns. ISO-31 class names are supported:

  ```
   <div class="duration">
    <span claa="d">4</span> and
    <abbr title="12" class="h">a half</abbr> days.
   </div>
  ```

  As are metric/SI measures (in seconds):

  ```
   <span class="duration">124 s</span>
   <span class="duration">124</span> seconds
  ```

  Or using an hMeasure microformat with no 'item' property, the 'type' property either absent or a case-insensitive match of 'duration' and a unit property of 's'/'sec'/'seconds', 'min'/'minutes', 'h'/'hours' or 'd'/'days'. For example:

  ```
   <span class="duration hmeasure">
    <b class="unit">Days</b>: <span class="num">4.5</span>
   </span>
  ```

### Public Methods

- "$d-\>duration"

  Returns a DateTime::Duration object.

- "$d-\>to\_string"

  Returns an ISO 8601 formatted string representing the duration.

- "$d-\>datatype"

  Returns an the RDF datatype URI representing the data type of this literal.

### Functions

- "compare($a, $b)"

  Compares durations `$a` and `$b`. Return values are as per 'cmp' (see perlfunc).

  Note that there is not always a consistent answer when comparing durations. 30 days is longer than a month in February, but shorter than a month in January. Durations are compared as if they were applied to the current datetime (i.e. now).

  This function is not exported by default.

  Can also be used as a method:

  ```
   $a->compare($b);
  ```

- "$c = add($a, $b)"

  Adds two durations together.

  This function is not exported by default.

  Can also be used as a method:

  ```
   $c = $a->add($b);
  ```

- "$c = subtract($a, $b)"

  Subtracts duration `$b` from `$a`.

  This function is not exported by default.

  Can also be used as a method:

  ```
   $c = $a->subtract($b);
  ```

## BUGS

Please report any bugs to \<http://rt.cpan.org/\>.

## SEE ALSO

HTML::Microformats, HTML::Microformats::Datatype, DateTime::Duration.

## AUTHOR

Toby Inkster \<tobyink@cpan.org\>.

## COPYRIGHT AND LICENCE

Copyright 2008-2012 Toby Inkster

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

## DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
