PHP计算工作日的问题

来源:互联网 发布:英雄联盟网吧特权软件 编辑:程序博客网 时间:2024/05/29 07:47
/**

* add word day
* @param $date
* @param $adds
* @return int
*/
public static function addWorkday($date, $adds)
{
$x = (int)($adds / 5);
$y = $adds % 5;
$tmp = $date;
/*判断剩余的天数与当前星期数之和是否大于7*/
if (7 < ($y + DateUtil::getWeekdayValue(date('l', $date)))) {
$add = 60 * 60 * 24 * 2;
} else {
$add = 0;
}
if (0 < $x)
$add += 60 * 60 * 24 * 7 * $x;
if (0 < $y)
$add += 60 * 60 * 24 * $y;
$tmp = $date + $add;
switch (date('l', $tmp)) {
case 'Sunday': {
$add += 60 * 60 * 24 * 2;
break;
}
case 'Saturday': {
$add += 60 * 60 * 24 * 2;
break;
}
default: {

}
}
$tmp = $date + $add;
return $tmp;
}

/**
* @param $weekday
* @return int
*/
public static function getWeekdayValue($weekday)
{
$value = 0;
switch ($weekday) {
case 'Monday': {
$value = 1;
break;
}
case 'Tuesday': {
$value = 2;
break;
}
case 'Wednesday': {
$value = 3;
break;
}
case 'Thursday': {
$value = 4;
break;
}
case 'Friday': {
$value = 5;
break;
}
case 'Saturday': {
$value = 6;
break;
}
case 'Sunday': {
$value = 7;
break;
}
default: {

}
}
return $value;
}

/**
* @param $date_from
* @param $date_to
* @return int
*/
public static function getWorkday($date_from, $date_to)
{
//convert to day
$sub = ($date_to - $date_from) / (60 * 60 * 24);
$x = (int)($sub / 7);
$y = $sub % 7;
/*判断剩余的天数与当前星期数之和是否大于7*/
if (7 < ($y + DateUtil::getWeekdayValue(date('l', $date_from)))) {
$y -= 2;
}
$tmp = 0;
if (0 < $x)
$tmp += 5 * $x;
if (0 < $y)
$tmp += $y;
return $tmp;
}



0 0
原创粉丝点击