NAME

DateTime::BusinessHours - An object that calculates business days and hours

SYNOPSIS

my $d1 = DateTime->new( year => 2007, month => 10, day => 15 );
my $d2 = DateTime->now;

my $test = DateTime:::BusinessHours->new(
    datetime1 => $d1,
    datetime2 => $d2,
    worktiming => [ 9, 17 ], # 9am to 5pm
    # lunch from 12 to 1
    # worktiming => [ [ 9, 12 ], [ 13, 17 ] ],
    weekends => [ 6, 7 ], # Saturday and Sunday
    holidays => [ '2007-10-31', '2007-12-24' ],
    holidayfile => 'holidays.txt'
    # holidayfile is a text file with each date in a new line
    # in the format yyyy-mm-dd  
);

# total business hours
print $test->gethours, "\n";
# total business days, based on the number of business hours in a day
print $test->getdays, "\n"; 

DESCRIPTION

BusinessHours a class for caculating the business hours between two DateTime objects. It can be useful in situations like escalation where an action has to happen after a certain number of business hours.

METHODS

new( %args )

This class method accepts the following arguments as parameters:

  • datetime1 - Starting Date

  • datetime2 - Ending Date

  • worktiming - May be one of the following:

    • An array reference with two values: starting and ending hour of the day

    • An array reference of array references. Each reference being a slice of the 24-hour clock where business is conducted. Useful if you want to leave a "lunch hour" out of the calculation. Defaults to [ [ 9, 17 ] ]

  • weekends - An array reference with values of the days that must be considered as non-working in a week. Defaults to [6,7] (Saturday & Sunday)

  • holidays - An array reference with holiday dates in 'yyyy-mm-dd' format

  • holidayfile - The name of a file from which predefined holidays can be excluded from business days/hours calculation. Defaults to no file

calculate( )

This will force a recalculation of the business hours and days. useful if you've changed any values (datetime1, datetime2, worktiming, etc) or updated the holiday file

getdays( )

Returns the number of business days

gethours( )

Returns the number of business hours.

INSTALLATION

To install this module, run the following commands:

perl Makefile.PL
make
make test
make install

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the perldoc command.

perldoc DateTime::BusinessHours

You can also look for information at:

RT, CPAN's request tracker
    http://rt.cpan.org/NoAuth/Bugs.html?Dist=DateTime-BusinessHours

AnnoCPAN, Annotated CPAN documentation
    http://annocpan.org/dist/DateTime-BusinessHours

CPAN Ratings
    http://cpanratings.perl.org/d/DateTime-BusinessHours

Search CPAN
    http://search.cpan.org/dist/DateTime-BusinessHours

AUTHOR

Antano Solar John <solar345@gmail.com>

MAINTAINER

Brian Cassidy <bricas@cpan.org>

COPYRIGHT AND LICENSE

Copyright (c) 2007-2011 Antano Solar John, 2012-2013 by Brian Cassidy

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.