File Coverage

blib/lib/Finance/GeniusTrader/DateTime/2Hour.pm
Criterion Covered Total %
statement 12 47 25.5
branch 0 46 0.0
condition n/a
subroutine 4 6 66.6
pod 0 2 0.0
total 16 101 15.8


line stmt bran cond sub pod time code
1             package Finance::GeniusTrader::DateTime::2Hour;
2              
3             # Copyright 2000-2002 Raphaël Hertzog, Fabien Fulhaber
4             # Copyright 2005 João Antunes Costa
5             # This file is distributed under the terms of the General Public License
6             # version 2 or (at your option) any later version.
7              
8 1     1   6 use strict;
  1         2  
  1         29  
9 1     1   5 use vars qw();
  1         2  
  1         27  
10              
11 1     1   5 use Finance::GeniusTrader::DateTime;
  1         2  
  1         310  
12 1     1   7 use Time::Local;
  1         2  
  1         490  
13              
14             =head1 Finance::GeniusTrader::DateTime::2Hour
15              
16             This module treat dates describing the 2Hour timeframe. They have the following format :
17             YYYY-MM-DD HH:00:00
18              
19             =cut
20             sub map_date_to_time {
21 0     0 0   my ($value) = @_;
22 0           my ($date, $time) = split / /, $value;
23 0           my ($y, $m, $d) = split /-/, $date;
24 0 0         $time = "00:00:00" if (!defined($time));
25 0           my ($h, , ) = split /:/, $time;
26 0 0         if ($h >=22) {$h=22}
  0 0          
  0 0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
27 0           elsif ($h>=20) {$h=20}
28 0           elsif ($h>=18) {$h=18}
29 0           elsif ($h>=16) {$h=16}
30 0           elsif ($h>=14) {$h=14}
31 0           elsif ($h>=12) {$h=12}
32 0           elsif ($h>=10) {$h=10}
33 0           elsif ($h>=8) {$h=8}
34 0           elsif ($h>=6) {$h=6}
35 0           elsif ($h>=4) {$h=4}
36 0           elsif ($h>=2) {$h=2}
37             else {$h=0}
38 0           return timelocal(0, 0, $h, $d, $m - 1, $y - 1900);
39             }
40              
41             sub map_time_to_date {
42 0     0 0   my ($time) = @_;
43 0           my ($sec, $min, $h, $d, $m, $y, $wd, $yd) = localtime($time);
44              
45 0 0         if ($h >=22) {$h=22}
  0 0          
  0 0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
46 0           elsif ($h>=20) {$h=20}
47 0           elsif ($h>=18) {$h=18}
48 0           elsif ($h>=16) {$h=16}
49 0           elsif ($h>=14) {$h=14}
50 0           elsif ($h>=12) {$h=12}
51 0           elsif ($h>=10) {$h=10}
52 0           elsif ($h>=8) {$h=8}
53 0           elsif ($h>=6) {$h=6}
54 0           elsif ($h>=4) {$h=4}
55 0           elsif ($h>=2) {$h=2}
56             else {$h=0}
57              
58 0           return sprintf("%04d-%02d-%02d %02d:00:00", $y + 1900, $m + 1, $d, $h);
59             }
60              
61             1;