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"
ISO8601DateTimeTZStr¶
An ISO8601 combined datetime string with a fully specified timezone. E.g.
"2009-06-11T12:06:34+00:00"
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.
- " 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
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)
"<bobtfish@bobtfish.net>"
- Dave Lambley "<davel@state51.co.uk>"
The development of this code was sponsored by my employer
<
http://www.state51.co.uk>.
Contributors¶
- Aaron Moses
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.