summaryrefslogtreecommitdiff
path: root/lib/Types/DateTime.pm
blob: d13f0d5bf64cd054db005fb0fcc67ee291589770 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;