Código PHP:
define("RelativePath", ".");
require(RelativePath . "/clsWorkDays.php");
$dates = new clsWorkDays;
$business_days = $dates->days_diff('2007-05-24', '2007-05-31');
$week_days = $dates->days_diff('2007-05-24', '2007-05-31', TRUE, FALSE);
$actual_days = $dates->days_diff('2007-05-24', '2007-05-31', FALSE, FALSE);
echo '<table>'.
'<tr><td>Work Days </td><td>'.$business_days.'</td></tr>'.
'<tr><td>Week Days </td><td>'.$week_days.'</td></tr>'.
'<tr><td>Physical Days </td><td>'.$actual_days.'</td></tr>'.
'</table>';
Código PHP:
class clsWorkDays {
var $holidays = array();
var $holiday_dates = array();
var $seconds_per_day = 86400;
var $sunday_val = "0";
var $saturday_val = "6";
function clsWorkDays( $p_type='UK' ) {
if ( $p_type=='UK' ) {
$this->holidays[] = new Holiday("New Years Day", $this->get_timestamp("2005-01-03"));
$this->holidays[] = new Holiday("Good Friday", $this->get_timestamp("2005-03-25"));
$this->holidays[] = new Holiday("Easter Monday", $this->get_timestamp("2005-03-28"));
$this->holidays[] = new Holiday("May Day", $this->get_timestamp("2005-05-02"));
$this->holidays[] = new Holiday("Spring Bank Holiday", $this->get_timestamp("2005-05-30"));
$this->holidays[] = new Holiday("Summer Bank Holiday", $this->get_timestamp("2005-08-29"));
$this->holidays[] = new Holiday("Christmas Day", $this->get_timestamp("2005-12-25"));
$this->holidays[] = new Holiday("Boxing Day", $this->get_timestamp("2005-12-26"));
$this->holidays[] = new Holiday("New Years Day", $this->get_timestamp("2006-01-02"));
$this->holidays[] = new Holiday("Good Friday", $this->get_timestamp("2006-04-14"));
$this->holidays[] = new Holiday("Easter Monday", $this->get_timestamp("2006-04-17"));
$this->holidays[] = new Holiday("May Day", $this->get_timestamp("2006-05-01"));
$this->holidays[] = new Holiday("Spring Bank Holiday", $this->get_timestamp("2006-05-29"));
$this->holidays[] = new Holiday("Summer Bank Holiday", $this->get_timestamp("2006-08-28"));
$this->holidays[] = new Holiday("Christmas Day", $this->get_timestamp("2006-12-27"));
$this->holidays[] = new Holiday("Boxing Day", $this->get_timestamp("2006-12-27"));
$this->holidays[] = new Holiday("New Years Day", $this->get_timestamp("2007-01-01"));
$this->holidays[] = new Holiday("Good Friday", $this->get_timestamp("2007-04-06"));
$this->holidays[] = new Holiday("Easter Monday", $this->get_timestamp("2007-04-09"));
$this->holidays[] = new Holiday("May Day", $this->get_timestamp("2007-05-07"));
$this->holidays[] = new Holiday("Spring Bank Holiday", $this->get_timestamp("2007-05-28"));
$this->holidays[] = new Holiday("Summer Bank Holiday", $this->get_timestamp("2007-08-27"));
$this->holidays[] = new Holiday("Christmas Day", $this->get_timestamp("2007-12-25"));
$this->holidays[] = new Holiday("Boxing Day", $this->get_timestamp("2007-12-26"));
$this->holidays[] = new Holiday("New Years Day", $this->get_timestamp("2008-01-01"));
$this->holidays[] = new Holiday("Good Friday", $this->get_timestamp("2008-03-21"));
$this->holidays[] = new Holiday("Easter Monday", $this->get_timestamp("2008-03-24"));
$this->holidays[] = new Holiday("May Day", $this->get_timestamp("2008-05-05"));
$this->holidays[] = new Holiday("Spring Bank Holiday", $this->get_timestamp("2008-05-26"));
$this->holidays[] = new Holiday("Summer Bank Holiday", $this->get_timestamp("2008-08-25"));
$this->holidays[] = new Holiday("Christmas Day", $this->get_timestamp("2008-12-25"));
$this->holidays[] = new Holiday("Boxing Day", $this->get_timestamp("2008-12-26"));
$this->holidays[] = new Holiday("New Years Day", $this->get_timestamp("2009-01-01"));
$this->holidays[] = new Holiday("Good Friday", $this->get_timestamp("2009-04-10"));
$this->holidays[] = new Holiday("Easter Monday", $this->get_timestamp("2009-04-13"));
$this->holidays[] = new Holiday("May Day", $this->get_timestamp("2009-05-04"));
$this->holidays[] = new Holiday("Spring Bank Holiday", $this->get_timestamp("2009-05-25"));
$this->holidays[] = new Holiday("Summer Bank Holiday", $this->get_timestamp("2009-08-31"));
$this->holidays[] = new Holiday("Christmas Day", $this->get_timestamp("2009-12-25"));
$this->holidays[] = new Holiday("Boxing Day", $this->get_timestamp("2009-12-28"));
}
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2005-12-26"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2005-12-27"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2005-12-28"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2005-12-29"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2005-12-30"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2006-12-25"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2006-12-26"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2006-12-27"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2006-12-28"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2006-12-29"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2007-12-24"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2007-12-25"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2007-12-26"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2007-12-27"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2007-12-28"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2008-12-29"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2008-12-30"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2008-12-31"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2009-12-28"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2009-12-29"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2009-12-30"));
$this->holidays[] = new Holiday("Christmas ShutDown", $this->get_timestamp("2009-12-31"));
//go fill array to enable fast searches
foreach ( $this->holidays as $holiday_date ) {
$this->holiday_dates[] = $holiday_date->date;
}
}
function days_diff($p_start_date, $p_end_date = NULL, $p_workdays_only = TRUE, $p_skip_holidays = TRUE){
$end_date = $p_end_date;
if ( strlen($p_end_date)==0 ) $end_date = $p_start_date;
$end_date = strtotime($end_date);
$start_date = strtotime($p_start_date);
$nbr_work_days = 0;
for($day_val = $start_date; $day_val <= $end_date; $day_val += $this->seconds_per_day){
$pointer_day = date("w", $day_val);
if($p_workdays_only == true){
if(($pointer_day != $this->sunday_val) AND ($pointer_day != $this->saturday_val)){
if($p_skip_holidays == true){
if(!in_array($day_val, $this->holiday_dates)){
$nbr_work_days++;
}
}else{
$nbr_work_days++;
}
}
}else{
if($p_skip_holidays == true){
if(!in_array($day_val, $this->holiday_dates)){
$nbr_work_days++;
}
}else{
$nbr_work_days++;
}
}
}
return $nbr_work_days;
}
function get_timestamp($p_date){
$date_array = explode("-",$p_date); // split the array
$the_year = $date_array[0];
$the_month = $date_array[1];
$the_day = $date_array[2];
$the_timestamp = mktime(0,0,0,$the_month,$the_day,$the_year);
return($the_timestamp); // return it to the user
}
}
class Holiday{
public $name;
public $date;
function holiday($name, $date){
$this->name = $name; // Holiday title
$this->date = $date; // Timestamp of date
}
}