GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
MooseX::Types::ISO8601(3) User Contributed Perl Documentation MooseX::Types::ISO8601(3)

MooseX::Types::ISO8601 - ISO8601 date and duration string type constraints and coercions for Moose

version 0.20

    use MooseX::Types::ISO8601 qw/
        ISO8601DateTimeStr
        ISO8601TimeDurationStr
    /;

    has datetime => (
        is => 'ro',
        isa => ISO8601DateTimeStr,
    );

    has duration => (
        is => 'ro',
        isa => ISO8601TimeDurationStr,
        coerce => 1,
    );

    Class->new( datetime => '2012-01-01T00:00:00' );

    Class->new( duration => 60 ); # 60s => PT00H01M00S
    Class->new( duration => DateTime::Duration->new(%args) )

This module packages several TypeConstraints with coercions for working with ISO8601 date strings and the DateTime suite of objects.

An ISO8601 date string. E.g. "2009-06-11"

An ISO8601 time string. E.g. "12:06:34Z"

An ISO8601 combined datetime string. E.g. "2009-06-11T12:06:34Z"

An ISO8601 combined datetime string with a fully specified timezone. E.g. "2009-06-11T12:06:34+00:00"

As above, only in addition to validating the strings against regular expressions, an attempt is made to actually parse the data into a DateTime object. This will catch cases like "2013-02-31" which look correct but do not correspond to real-world values. Note that this bears a computation penalty.

The date types will coerce from:
" Num "
The number is treated as a time in seconds since the unix epoch
" DateTime "
The duration represented as a DateTime object.
" Str "
Non-expanded date and time string representations.

e.g.:-

20120113 => 2012-01-13 170500Z => 17:05:00Z 20120113T170500Z => 2012-01-13T17:05:00Z

Representations of UTC time zone (only an offset of zero is supported)

e.g.:-

17:05:00+00:00 => 17:05:00Z 17:05:00+00 => 17:05:00Z 170500+0000 => 17:05:00Z

2012-01-13T17:05:00+00:00 => 2012-01-13T17:05:00Z 2012-01-13T17:05:00+00 => 2012-01-13T17:05:00Z 20120113T170500+0000 => 2012-01-13T17:05:00Z

Also supports non-standards mixing of expanded and non-expanded representations

e.g.:-

2012-01-13T170500Z => 2012-01-13T17:05:00Z 20120113T17:05:00Z => 2012-01-13T17:05:00Z

In addition, there are coercions from these string types to DateTime.

An ISO8601 date duration string. E.g. "P01Y01M01D"

An ISO8601 time duration string. E.g. "PT01H01M01S"

An ISO8601 combined date and time duration string. E.g. "P01Y01M01DT01H01M01S"

The duration types will coerce from:
" Num "
The number is treated as a time in seconds
" DateTime::Duration "
The duration represented as a DateTime::Duration object.

The duration types will coerce to:

" Duration "
A DateTime::Duration, i.e. the " Duration " constraint from MooseX::Types::DateTime.

If provided, the number of seconds in time types is represented to microsecond accuracy. A full stop character is used as the decimal separator, which is allowed, but deprecated in preference to the comma character in ISO 8601:2004.

This module is probably full of bugs; patches are very welcome.

Specifically, there are missing features:

  • When no time-zone is specified, UTC is assumed. (Should floating timezone be used?)
  • No week number type
  • "Basic format", which lacks separator characters, is not supported for reading or writing.
  • Tests are rubbish.

  • MooseX::Types::DateTime
  • DateTime
  • DateTime::Duration
  • DateTime::Format::ISO8601
  • DateTime::Format::Duration
  • <http://en.wikipedia.org/wiki/ISO_8601>
  • <http://dotat.at/tmp/ISO_8601-2004_E.pdf>

The development of this code was sponsored by my (Tom's) employer <http://www.state51.com/>.

Bugs may be submitted through the RT bug tracker <https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Types-ISO8601> (or bug-MooseX-Types-ISO8601@rt.cpan.org <mailto:bug-MooseX-Types-ISO8601@rt.cpan.org>).

There is also a mailing list available for users of this distribution, at <http://lists.perl.org/list/moose.html>.

There is also an irc channel available for users of this distribution, at "#moose" on "irc.perl.org" <irc://irc.perl.org/#moose>.

  • Tomas Doran (t0m) <bobtfish@bobtfish.net>
  • Dave Lambley <dlambley@cpan.org>

  • Karen Etheridge <ether@cpan.org>
  • Dave Lambley <dave@lambley.me.uk>
  • zebardy <zebardy@gmail.com>
  • Gregory Oschwald <goschwald@maxmind.com>
  • Mark Fowler <mark@twoshortplanks.com>

This software is copyright (c) 2009 by Tomas Doran.

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

2020-02-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.