File Coverage

lib/Pcore/Util/Date.pm
Criterion Covered Total %
statement 25 34 73.5
branch 3 6 50.0
condition n/a
subroutine 4 6 66.6
pod 1 4 25.0
total 33 50 66.0


line stmt bran cond sub pod time code
1             package Pcore::Util::Date;
2              
3 1     1   9 use Pcore;
  1         3  
  1         7  
4 1     1   8 use base qw[Time::Moment Pcore::Util::Date::Strptime];
  1         3  
  1         426  
5              
6 1     1 1 4 sub parse ( $self, $date ) {
  1         3  
  1         3  
  1         3  
7 1         4 state $init = do {
8 1         631 require HTTP::Date;
9 1         3317 require Time::Zone;
10              
11 1         1304 1;
12             };
13              
14 1 50       5 if ( my @http_date = HTTP::Date::parse_date($date) ) {
15 1         47 my %args = ( #
16             year => $http_date[0],
17             month => $http_date[1],
18             day => $http_date[2],
19             hour => $http_date[3],
20             minute => $http_date[4],
21             second => $http_date[5],
22             nanosecond => 0,
23             );
24              
25 1 50       4 if ( defined $http_date[6] ) {
26 1         7 my $offset = Time::Zone::tz_offset( $http_date[6] );
27              
28             # invalid offset
29 1 50       54 die qq[Invalid date offset "$http_date[6]"] if !defined $offset;
30              
31 1         7 $args{offset} = $offset / 60;
32             }
33              
34 1         119 return $self->new(%args);
35             }
36             else {
37 0         0 return;
38             }
39             }
40              
41             # %a, %d %b %Y %H:%M:%S %z
42 0     0 0 0 sub to_rfc_1123 ($self) {
  0         0  
  0         0  
43 0         0 return $self->strftime('%a, %d %b %Y %H:%M:%S %z');
44             }
45              
46             *to_http_date = \&to_rfc_2616;
47              
48             # %a, %d %b %Y %H:%M:%S GMT
49 1     1 0 4 sub to_rfc_2616 ($self) {
  1         4  
  1         2  
50 1         50 return $self->at_utc->strftime('%a, %d %b %Y %H:%M:%S GMT');
51             }
52              
53             # %Y-%m-%dT%H:%M:%S%Z
54 0     0 0   sub to_w3cdtf ($self) {
  0            
  0            
55 0           return $self->strftime('%Y-%m-%dT%H:%M:%S%Z');
56             }
57              
58             1;
59             __END__
60             =pod
61              
62             =encoding utf8
63              
64             =head1 NAME
65              
66             Pcore::Util::Date
67              
68             =head1 SYNOPSIS
69              
70             =head1 DESCRIPTION
71              
72             =cut