找到的一个方案如下:
function get_weekend_days($start_date, $end_date, $weekend_days=1) {
$data = array();
$start_reduce = $end_add = 0;
$start_N = date('N',strtotime($start_date));
$start_reduce = ($start_N == 7) ? 1 : 0;
$end_N = date('N',strtotime($end_date));
// 进行单、双休判断,默认按单休计算
$weekend_days = intval($weekend_days);
switch ($weekend_days)
{
case 2:
in_array($end_N,array(6,7)) && $end_add = ($end_N == 7) ? 2 : 1;
break;
case 1:
default:
$end_add = ($end_N == 7) ? 1 : 0;
break;
}
$days = ((strtotime($end_date) - strtotime($start_date))/86400) + 1;
$data['total_days'] = $days;
$data['total_relax'] = floor(($days + $start_N - 1 - $end_N) / 7) * $weekend_days - $start_reduce + $end_add;
return $data;
}
这个$data['total_relax'] 为什么要这样计算呢? 这方法好像不太好用,比如今天 是周天 但是返回的$data['total_relax']是0
1 回答
![?](http://img1.sycdn.imooc.com/5458471300017f3702200220-100-100.jpg)
慕田峪9158850
TA贡献1794条经验 获得超7个赞
试试这个修改过的
<?php
function get_weekend_days($start_date, $end_date, $weekend_days=1) {
$data = array();
$start_reduce = $end_add = 0;
$start_N = date('N',strtotime($start_date));
$end_N = date('N',strtotime($end_date));
// 进行单、双休判断,默认按单休计算
$weekend_days = intval($weekend_days);
switch ($weekend_days)
{
case 2:
in_array($end_N,array(6,7)) && $end_add = ($end_N == 7) ? 2 : 1;
$start_reduce = ($start_N == 7) ? 1 : 0;
break;
case 1:
default:
$end_add = ($end_N == 7) ? 1 : 0;
break;
}
$days = ((strtotime($end_date) - strtotime($start_date))/86400) + 1;
$data['total_days'] = $days;
$data['total_relax'] = floor(($days + $start_N - 1 - $end_N) / 7) * $weekend_days - $start_reduce + $end_add;
return $data;
}
echo "Two days per week\n";
var_dump( get_weekend_days("2018-03-31","2018-04-08",2));
var_dump( get_weekend_days("2018-04-01","2018-04-08",2));
var_dump( get_weekend_days("2018-04-02","2018-04-08",2));
var_dump( get_weekend_days("2018-04-07","2018-04-08",2));
var_dump( get_weekend_days("2018-04-08","2018-04-08",2));
echo "One day per week\n";
var_dump( get_weekend_days("2018-03-31","2018-04-08",1));
var_dump( get_weekend_days("2018-04-01","2018-04-08",1));
var_dump( get_weekend_days("2018-04-02","2018-04-08",1));
var_dump( get_weekend_days("2018-04-07","2018-04-08",1));
var_dump( get_weekend_days("2018-04-08","2018-04-08",1));
- 1 回答
- 0 关注
- 628 浏览
添加回答
举报
0/150
提交
取消