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

use MooseX::Types::ISO8601 qw/
ISO8601TimeDurationStr
/;
has duration => (
isa => ISO8601TimeDurationStr,
is => 'ro',
coerce => 1,
);
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:06Z
An ISO8601 combined datetime string. E.g. 2009-06-11T12:06Z
An ISO8601 date duration string. E.g. P01Y01M01D
Num The number is treated as a time in seconds
DateTime::Duration The duration represented as a DateTime::Duration object.
An ISO8601 time duration string. E.g. PT01H01M01S
Num The number is treated as a time in seconds
DateTime::Duration The duration represented as a DateTime::Duration object.
An ISO8601 comboined date and time duration string. E.g. P01Y01M01DT01H01M01S
Num The number is treated as a time in seconds
DateTime::Duration The duration represented as a DateTime::Duration object.


http://github.com/bobtfish/moosex-types-iso8601/tree/master

Probably full of them, patches are very welcome.
Specifically missing features:

Tomas Doran (t0m) <bobtfish@bobtfish.net>
The development of this code was sponsored by my employer http://www.state51.co.uk.

Copyright (c) 2009 Tomas Doran. Some rights reserved.
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.