php 把月分割为天,PHP按日期按天对时间段进行分割

//开始时间 ~ 结束时间

$start_date=I('date_a');

$end_date=I('date_b');

//

//如果为空,则从今天的0点为开始时间

if(!empty($start_date))

$start_date=date('Y-m-d H:i:s',strtotime($start_date));

else

$start_date=date('Y-m-d 00:00:00',time());

//

//如果为空,则以明天的0点为结束时间(不存在24:00:00,只会有00:00:00)

if(!empty($end_date))

$end_date=date('Y-m-d H:i:s',strtotime($end_date));

else

$end_date=date('Y-m-d 00:00:00',strtotime('+1 day'));

//between 查询 要求必须是从低到高

if($start_date>$end_date)

{

$ttt=$start_date;

$start_date=$end_date;

$end_date=$ttt;

}elseif($start_date==$end_date){

echo '时间输入错误';die;

}

$time_s=strtotime($start_date);

$time_e=strtotime($end_date);

//生成中间时间点数组(时间戳格式、日期时间格式、日期序列)

$days_inline_array=array();

$times_inline_array=array();

$days_list=array();

//判断开始和结束时间是不是在同一天

$days_inline_array[0]=$start_date;

$times_inline_array[0]=$time_s;

if(

date('Y-m-d',$time_s)

==date('Y-m-d',$time_e)

){

$days_inline_array[1]=$end_date;

$times_inline_array[1]=$time_e;

$days_list[]=date('Y-m-d',$time_s);

}

else

{

/**

* A.取开始时间的第二天凌晨0点

* B.用结束时间减去A

* C.用B除86400取商,取余

* D.用A按C的商循环+86400,取得分割时间点,如果C没有余数,则最后一个时间点与循环最后一个时间点一致

*/

$A_temp=date('Y-m-d 00:00:00',$time_s+86400);

$A=strtotime($A_temp);

$B=$time_e-$A;

$C_quotient=floor($B/86400); //商舍去法取整

$C_remainder=fmod($B,86400); //余数

$days_inline_array[1]=$A_temp;

$times_inline_array[1]=$A;

$days_list[]=date('Y-m-d',$A);

for($increase_time=$A,$c_count_t=1;$c_count_t<=$C_quotient;$c_count_t++)

{

$increase_time+=86400;

$days_inline_array[]=date('Y-m-d H:i:s',$increase_time);

$times_inline_array[]=$increase_time;

$days_list[]=date('Y-m-d',$increase_time);

}

//如果有余数,则最后一个时间点大于循环最后一个时间点,但在同一天

if($C_remainder)

{

$days_inline_array[]=$end_date;

$times_inline_array[]=$time_e;

//这里不再添加 $days_list,因为余数和最后一个凌晨0点必定是同一天

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值