php 获取时间差,PHP计算时间差

这个需求是计算两个时间的差值,当然PHP在5.3版本已经提供了相关的计算函数,本文也会有该函数的示例,除了PHP提供的解决方法之外,这里会再提供几种解决方式以供参考. 需求如下

差值小于24小时,为今天

差值小于30天,直接显示剩余天数

差值大于30天,显示1月之后

内置函数解决方案

使用函数date_diff计算两日期差值,返回的是DateInterval的object数据,直接根据相关需求进行数据处理即可.==注意:传入日期格式,对传入日期进行格式化==,当然关于天的计算标准,需要根据情况来看,比如1月1号到1月5号,系统计算出来的是4天,但是人们会认为1号到5号是5天,这个根据实际情况来进行一个细节处理.

/**

* 传入日期格式 2017-01-23

* @param $begin_time

* @param $end_time

* @return DateInterval|false

*/

function time_difference ( $begin_time , $end_time ) {

$datetime1 = date_create ( $begin_time );

$datetime2 = date_create ( $end_time );

$interval = date_diff ( $datetime1 , $datetime2 );

return $interval;

}

输出与结果

//输出

$a = time_difference('2017-1-1','2017-1-5');

var_dump($a);

//结果

object(DateInterval)#3 (15) {

["y"]=>

int(0)

["m"]=>

int(0)

["d"]=>

int(4)

["h"]=>

int(0)

["i"]=>

int(0)

["s"]=>

int(0)

["weekday"]=>

int(0)

["weekday_behavior"]=>

int(0)

["first_last_day_of"]=>

int(0)

["invert"]=>

int(1)

["days"]=>

int(4)

["special_type"]=>

int(0)

["special_amount"]=>

int(0)

["have_weekday_relative"]=>

int(0)

["have_special_relative"]=>

int(0)

}

简单粗暴方式

根据需求,直接使用比较原始,比较有效的方式进行计算即可.当然这种方式的局限性比较大,根据情况自行决定是否使用. 代码示例

$num = strtotime('2017-1-5') - strtotime('2017-1-1');

$diff = floor($num/60/60/24);

if($diff >= 30){

echo '1月';

}elseif($diff >=1){

echo ($diff+1).'天'; //这里是否+1自己决定,上面已经说过,不再赘述

}elseif($diff < 1){

echo '今天';

}

输出结果5天

时间差计算

function time2Units ( $time ) {

$year = floor ( $time / 60 / 60 / 24 / 365 );

$time -= $year * 60 * 60 * 24 * 365;

$month = floor ( $time / 60 / 60 / 24 / 30 );

$time -= $month * 60 * 60 * 24 * 30;

$week = floor ( $time / 60 / 60 / 24 / 7 );

$time -= $week * 60 * 60 * 24 * 7;

$day = floor ( $time / 60 / 60 / 24 );

$time -= $day * 60 * 60 * 24;

$hour = floor ( $time / 60 / 60 );

$time -= $hour * 60 * 60;

$minute = floor ( $time / 60 );

$time -= $minute * 60;

$second = $time;

$elapse = '';

$unitArr = array ( '年' => 'year' ,

'个月' => 'month' ,

'周' => 'week' ,

'天' => 'day' ,

'小时' => 'hour' ,

'分钟' => 'minute' ,

'秒' => 'second'

);

foreach ( $unitArr as $cn => $u ) {

if ( $$u > 0 ) {

$elapse = $$u . $cn;

break;

}

}

return $elapse;

}

输出与解决

//输出

$num = strtotime('2017-1-5') - strtotime('2017-1-1');

echo time2Units ( $num );

//结果

4天

这里就介绍着三种计算时间差的方法,当然计算时间差方法不只是这三种,可以说这种方法根据自己的想法来做,会出现很多种计算方式,可能每个人的做法都不相同,当然最后的计算结果对了才是最重要的.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值