php 两个时间间隔_php 计算两个日期这间的间隔天数

本文章来给各位同学详细介绍关于php 计算两个日期这间的间隔天数实例,各位同学可参考,我们一般是把日期用strtotime转换,然后再进行算,这样可以精确到时分秒去哦。

例1

直接把日期转换

 代码如下复制代码

function daysbetweendates($date1, $date2){

$date1 = strtotime($date1);

$date2 = strtotime($date2);

$days = ceil(abs($date1 - $date2)/86400);

return $days;

}

例2

 代码如下复制代码

functionmaketime($date)

{

list($year,$month,$day) = explode('-',$date);

returnmktime(0,0,0,$month,$day,$year);

}

$date1 = '2007-01-08';

$date2 = '2007-03-01';

$d = (maketime($date2) - maketime($date1)) / (3600*24);

echo'相差$d 天';

?>

例3

PHP实现两个日期间隔的年、月、周、日数的计算

 代码如下复制代码
<?php

function format($a,$b){

//检查两个日期大小,默认前小后大,如果前大后小则交换位置以保证前小后大

if(strtotime($a)>strtotime($b)) list($a,$b)=array($b,$a);

$start  = strtotime($a);

$stop   = strtotime($b);

$extend = ($stop-$start)/86400;

$result['extends'] = $extend;

if($extend<7){                //如果小于7天直接返回天数

$result['daily'] = $extend;

}elseif($extend<=31){        //小于28天则返回周数,由于闰年2月满足了

if($stop==strtotime($a.' 1 month')){

$result['monthly'] = 1;

}else{

$w = floor($extend/7);

$d = ($stop-strtotime($a.' '.$w.' week'))/86400;

$result['weekly']  = $w;

$result['daily']   = $d;

}

}else{

$y=    floor($extend/365);

if($y>=1){                //如果超过一年

$start = strtotime($a.' '.$y.'year');

$a     = date('Y-m-d',$start);

//判断是否真的已经有了一年了,如果没有的话就开减

if($start>$stop){

$a = date('Y-m-d',strtotime($a.'-1 month'));

$m =11;

$y--;

}

$extend = ($stop-strtotime($a))/86400;

}

if(isset($m)){

$w = floor($extend/7);

$d = $extend-$w*7;

}else{

$m = isset($m)?$m:round($extend/30);

$stop>=strtotime($a.' '.$m.'month')?$m:$m--;

if($stop>=strtotime($a.' '.$m.'month')){

$d=$w=($stop-strtotime($a.' '.$m.'month'))/86400;

$w = floor($w/7);

$d = $d-$w*7;

}

}

$result['yearly']  = $y;

$result['monthly'] = $m;

$result['weekly']  = $w;

$result['daily']   = isset($d)?$d:null;

}

return array_filter($result);

}

print_r(format('2012-10-1','2012-12-15'));

?>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值