diff options
Diffstat (limited to 'lib/Types/DateTime.pm')
-rw-r--r-- | lib/Types/DateTime.pm | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/Types/DateTime.pm b/lib/Types/DateTime.pm new file mode 100644 index 0000000..d13f0d5 --- /dev/null +++ b/lib/Types/DateTime.pm @@ -0,0 +1,20 @@ +package Types::DateTime; +use strict; +use warnings; +use namespace::autoclean; +use Type::Library -base, -declare => 'DateTimeT'; +use Type::Utils -all; +use Types::Standard -types; + +class_type DateTimeT, { class => 'DateTime' }; +coerce DateTimeT, from Num, via { + require DateTime; + DateTime->from_epoch(epoch => $_ ); +}; +coerce DateTimeT, from Str, via { + require DateTime::Format::ISO8601; + s{([+-])(\d\d)(\d\d)\z}{$1$2:$3}; + DateTime::Format::ISO8601->new->parse_datetime($_) +}; + +1; |