NAME MooseX::Types::ISO8601 - ISO8601 date and duration string type constraints and coercions for Moose SYNOPSIS 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) ) DESCRIPTION This module packages several TypeConstraints with coercions for working with ISO8601 date strings and the DateTime suite of objects. DATE CONSTRAINTS ISO8601DateStr An ISO8601 date string. E.g. "2009-06-11" ISO8601TimeStr An ISO8601 time string. E.g. "12:06:34Z" ISO8601DateTimeStr An ISO8601 combined datetime string. E.g. "2009-06-11T12:06:34Z" COERCIONS 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. DURATION CONSTRAINTS ISO8601DateDurationStr An ISO8601 date duration string. E.g. "P01Y01M01D" ISO8601TimeDurationStr An ISO8601 time duration string. E.g. "PT01H01M01S" ISO8601DateTimeDurationStr An ISO8601 comboined date and time duration string. E.g. "P01Y01M01DT01H01M01S" COERCIONS 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. SEE ALSO * MooseX::Types::DateTime * DateTime * DateTime::Duration * DateTime::Format::Duration VERSION CONTROL http://github.com/bobtfish/moosex-types-iso8601/tree/master Patches are welcome. SEE ALSO * http://en.wikipedia.org/wiki/ISO_8601 * http://dotat.at/tmp/ISO_8601-2004_E.pdf FEATURES Fractional seconds If provided, the number of seconds in time types is represented to microsecond accuracy. A full stop character is used as the decimal seperator, which is allowed, but deprecated in preference to the comma character in *ISO 8601:2004*. BUGS Probably full of them, patches are very welcome. Specifically missing features: * No timezone support - all times are assumed UTC * No week number type * "Basic format", which lacks seperator characters, is not supported for reading or writing. * Tests are rubbish. AUTHOR Tomas Doran (t0m) "" The development of this code was sponsored by my employer . COPYRIGHT 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.